我有一个文件夹树。其中一些文件夹包含名为“.file.php”的文件。如何将树中所有具有此名称的文件递归重命名为“.file1.php”?我在 Debian 服务器上。
答案1
完整的解决方案如下
find -name '*.file.php' -exec rename 's/\.file\.php$/.file1.php/' {} \;
答案2
您在 debian 上有吗rename
?我不知道,但是因为它在 ubuntu 上有,所以我想是的。
NAME rename - 重命名多个文件
摘要 重命名 [ -v ] [ -n ] [ -f ] perlexpr [ 文件 ]
描述“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/A-Z/a-z/' *
从谷歌搜索结果复制的一个例子可能已经非常接近你想要的:
以下是重命名命令的示例:
重命名 -n 's/.htm$/.html/' *.htm
-n 表示这是一次测试运行,实际上不会更改任何文件。它会向您显示如果删除 -n 将被重命名的文件列表。在上述情况下,它会将当前目录中的所有文件从文件扩展名 .htm 转换为 .html。
如果上述测试运行的输出看起来没问题,那么您可以运行最终版本:
重命名 -v 's/.htm$/.html/' *.htm
-v 是可选的,但最好将其包括在内,因为它是重命名命令所做更改的唯一记录......