Linux下如何用find命令批处理拷贝文件并修改文件名

原创 用友财务软件  2022-09-22 18:45:09  阅读 418 次 评论 0 条
摘要:

????????我们通常会遇到一个情况,在一个大文件夹下的无数子文件夹里存了无数相同类型的文件,有时发现文件名或扩展名错了需要修改。一个一个手动修改是不可能,写个程序来修改也挺费时。这时就想有没有办法

本文主要分享【】,技术文章【Linux下如何用find命令批处理拷贝文件并修改文件名】为【CP Coding】投稿,如果你遇到相关问题,请看以下文章。

????????我们通常会遇到一个情况,在一个大文件夹下的无数子文件夹里存了无数相同类型的文件,有时发现文件名或扩展名错了需要修改。一个一个手动修改是不可能,写个程序来修改也挺费时。这时就想有没有办法用一条命令搞定?答案是肯定的,Linux下强大的‘find’命令可以帮我们搞定。以下就用一个例子来说明如何使用'find'命令来达到这个目的。

? ? ? ? 如下图,在一个test_folder下有两个子文件夹,里面有一些‘.log’文件,现在我们想把所有.log文件改成‘.txt’文件。

? ? ? ? 在终端运行下面这条命令就可以搞定一切。

 find ./ -type f -name "*.log" -exec bash -c 'cp "$0" "${0/log/txt}"' {} \;

?????????命令解析:?

????????find ./ -type f -name "*.log" : 在当前文件夹下查找所有‘.log’文件

? ? ? ? -exec?对find查找的结果执行-exec 之后的命令

? ? ? ? {}? 表示find查找的结果。The results placeholder is denoted by two curly braces {}.

? ? ? ? \;? 分隔符,表示-exec 之后的参数到此结束

????????bash -c 'cp "$0" "${0/log/txt}"' {} 其中bash表示启动一个子程序使用新的bash, 父程序就是当前bash;? '-c' 后面是字符串'cp "$0" "${0/log/txt}"'为在新bash子程序里执行的命令;find的结果{}作为一个参数传入新的子程序即为 ‘$0’

本文《Linux下如何用find命令批处理拷贝文件并修改文件名》版权归CP Coding所有,引用需遵循CC 4.0 BY-SA版权协议。

本文地址:https://www.ufidawhy.com/gjp/120310.html
版权声明:本文来源于网络,如有侵权请E-mail联系 ufidawhy 站长 ufidawhy@vip.qq.com!

评论已关闭!