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

时间:2012-10-24 14:58:28

标签: linux ubuntu terminal rename

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

2 个答案:

答案 0 :(得分:34)

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

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”,你将会受到破坏。