在Ubuntu的所有子目录中将文件名更改为小写

我知道这是问,但我发现迄今为止还没有解决。 我来的壁橱是这样的: rename -n 'y[AZ]/[az]/' *它适用于当前目录。 我不太擅长Linuxterminal,所以我应该添加到这个命令中,将它应用到我所在的所有子目录中的所有文件,谢谢!

Solutions Collecting From Web of "在Ubuntu的所有子目录中将文件名更改为小写"

以下是使用findtr的一种方法:

 for i in $(find . -type f -name "*[AZ]*"); do mv "$i" "$(echo $i | tr AZ az)"; done 

编辑; 添加: -name "*[AZ]*"

这确保只有大写字母的文件被找到。 例如,如果找到只有小写字母的文件并将其移动到同一个文件,则mv将显示are the same file错误。

Perl有一个locale-aware的lc()函数可能会更好地工作:

 find . -type f | perl -n -e 'chomp; system("mv", $_, lc($_))' 

请注意,此脚本处理文件名中的空格,但不包含换行符。 而且,如果你有“ASDF.txt”和“asdf.txt”,就不会有碰撞的保护。