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

时间:2019-06-07 11:56:59

标签: linux rename file-rename

如何重命名Linux CentOS 7上的所有(子)目录和文件? 我尝试了此命令,但没有用:

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

1 个答案:

答案 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)