如何重命名 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/