如何重命名Linux CentOS 7上的所有(子)目录和文件? 我尝试了此命令,但没有用:
find Files -depth | xargs -n 1 rename -v ‘s/(.*)\/([^\/]*)/$1\/\L$2/’ {} \;
答案 0 :(得分:0)
第一个问题:您在xargs操作中使用了智能引号,即命令:
xargs -n 1 rename -v ‘s/(.*)\/([^\/]*)/$1\/\L$2/’ {} \;
永远不会工作。智能引号在外壳程序中是无效字符。 {} \;
的存在似乎表明您正在重做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)