linux - 如何重命名 Linux CentOS 7 上的所有(子)目录和文件

标签 linux rename file-rename

如何重命名 Linux CentOS 7 上的所有(子)目录和文件? 我尝试了这个命令,但它不起作用:

find Files -depth | xargs -n 1 rename -v ‘s/(.*)\/([^\/]*)/$1\/\L$2/’ {} \;

最佳答案

第一个问题:您在 xargs 操作中使用了智能引号,即命令:

xargs -n 1 rename -v ‘s/(.*)\/([^\/]*)/$1\/\L$2/’ {} \;

永远不会起作用。智能引号是 shell 中的无效字符。 {}\; 的存在似乎表明您正在重新执行 find -exec,在本例中完全不需要,因此 xargs 可以替换为:

xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/'

出于测试目的添加 -n ,它会在我的文件系统上的文件上显示一堆上位 -> 下位重命名,因此它现在看起来确实在做正确的事情。

我建议的重写:

find Files -depth -print0 | xargs -0 -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/'

应该完成您正在尝试的任务,并尝试避免涉及包含空格的文件的问题。

没有-print0/-0,如果我这样做:

touch "common/this is EVIL"

然后操作将显示它不会重命名该文件,而如果我使用 -print0/-0 它显示:

rename(common/this is EVIL, common/this is evil)

关于linux - 如何重命名 Linux CentOS 7 上的所有(子)目录和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56493861/

相关文章:

c - 如何让 gcc 警告未知函数?

java - 用于重命名文件的 Gradle 任务

r - 删除列名中的字符

python - 如何重命名文件并更改文件类型?

java - 重命名由应用程序在 android 10 中创建的 Mediastore 文件。在 Android API 30 上工作,但在 API 29 中显示错误

regex - 我可以在正则表达式中使用求和吗?

visual-studio-2015 - 解决方案资源管理器VS 2015中的文件重命名

regex - Grep SPAM 邮箱中标记的邮件

linux - 从 Perl 在 (Ubuntu) Linux 上启动一个独立的 Selenium RC 服务器

c - 64 位到 10 位的哈希函数