本文主要分享【】,技术文章【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版权协议。
版权声明:本文来源于网络,如有侵权请E-mail联系 ufidawhy 站长 ufidawhy@vip.qq.com!