我知道有人问过,但我发现到目前为止还没有找到。
我来的壁橱是这样的:rename -n 'y[A-Z]/[a-z]/' *
适用于当前目录。我不太擅长Linux终端那么
我应该添加到此命令以将其应用于我所在的所有子目录中的所有文件,谢谢!
答案 0 :(得分:34)
以下是使用find
和tr
的一种方式:
for i in $(find . -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done
编辑;补充:-name "*[A-Z]*"
这可确保只找到带大写字母的文件。例如,如果找到只有小写字母的文件并将其移动到同一文件,mv
将显示are the same file
错误。
答案 1 :(得分:10)
Perl具有可识别区域设置的lc()
功能,可能效果更好:
find . -type f | perl -n -e 'chomp; system("mv", $_, lc($_))'
请注意,此脚本处理文件名中的空格,但不处理换行符。并且没有防止冲突的保护,如果你有“ASDF.txt”和“asdf.txt”,你将会受到破坏。