如何通过特定名称递归查找文件夹中的所有文件并重命名?
我有一个文件夹树。 其中一些包含名为“.file.php”的文件如何在树中以递归方式将所有文件重命名为“.file1.php”? 我在debian服务器上。
完整的解决方案如下所示
find -name '*.file.php' -exec rename 's/\.file\.php$/.file1.php/' {} \;
你有debian rename
吗? idk,但因为它在ubuntu上可用,我想是的。
NAME重命名 – 重命名多个文件
大纲重命名[-v] [-n] [-f] perlexpr [files]
说明“rename”根据指定为第一个参数的规则重命名提供的文件名。 perlexpr参数是一个Perl表达式,它应该至少修改一些指定文件名的Perl中的$ _字符串。 如果表达式未修改给定的文件名,则不会重命名。 如果命令行中没有给出文件名,则将通过标准输入读取文件名。
For example, to rename all files matching "*.bak" to strip the extension, you might say rename 's/\.bak$//' *.bak To translate uppercase names to lower, you'd use rename 'y/AZ/az/' *
从谷歌搜索结果中复制的示例可能已经非常接近您想要的内容:
以下是重命名命令的示例:
重命名-n’s / .htm $ / .html /’* .htm
-n表示它是一个测试运行,实际上不会更改任何文件。 它将显示一个文件列表,如果删除了-n,将重命名这些文件。 在上面的例子中,它会将当前目录中的所有文件从.htm的文件扩展名转换为.html。
如果上面测试运行的输出看起来没问题,那么你可以运行最终版本:
重命名-v的/ .htm $ / .html /’* .htm
-v是可选的,但是包含它是一个好主意,因为它是你将拥有的重命名命令所做的更改的唯一记录….