如何通过特定名称递归查找文件夹中的所有文件并重命名?

我有一个文件夹树。 其中一些包含名为“.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是可选的,但是包含它是一个好主意,因为它是你将拥有的重命名命令所做的更改的唯一记录….