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

Nat*_*ade 22 linux terminal ubuntu rename

我知道有人问过,但我发现到目前为止还没有找到.我来的壁橱是:rename -n 'y[A-Z]/[a-z]/' * 它适用于当前目录.我不太擅长Linux终端,所以我应该添加什么来将它应用到我所在的所有子目录中的所有文件,谢谢!

Ste*_*eve 34

这是使用find和的一种方式tr:

for i in $(find . -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done
Run Code Online (Sandbox Code Playgroud)

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

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


And*_*oss 10

Perl有一个lc()可以更好地运行语言环境的功能:

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

请注意,此脚本处理文件名中的空格,但不处理换行符.并且没有防止冲突的保护,如果你有"ASDF.txt"和"asdf.txt",你将会受到破坏.