Linux 如何更改递归文件名的大小写?

Linux 如何更改递归文件名的大小写?,linux,file,case,Linux,File,Case,我需要将所有文件的大小写设置为小写: directory11 subdirectory11 subdirectory21 File1 File2 ... Filen directory21 subdirectory21 subdirectory21

我需要将所有文件的大小写设置为小写:

directory11
       subdirectory11
             subdirectory21
                 File1
                 File2
                 ...
                 Filen
directory21
       subdirectory21
             subdirectory21
                 File1
                 File2
                 ...
                 Filen
..............................................


directory11
       subdirectory11
             subdirectory21
                 file1
                 file2
                 ...
                 filen
directory21
       subdirectory21
             subdirectory21
                 file1
                 file2
                 ...
                 filen
..............................................

使用linux命令可以吗?谢谢。

< P>你应该考虑使用<代码>重命名(1)< /C>命令:

rename 'y/A-Z/a-z/' **
**
如果您使用的是bash4和
globstar
设置,则表示递归:

shopt -s globstar
此外,这是
rename
的perl版本。如果你打字

file $(readlink -f $(type -p rename))
您看到的是
ELF
,您使用的是错误的,请参见
prename

您可以执行以下操作:

rename 'y/A-Z/a-z/' * 重命名为“y/A-Z/A-Z/”*
许多可能的选项之一是使用
tr
更改案例。使用目录中的
Find
查找所有文件。使用
tr
&使用
mv
重命名创建上面的文件名字符串。在这些方面:

while read OLD_FILENAME
do
    NEW_FILENAME=`echo "$OLD_FILENAME"|tr [:upper:] [:lower:]`
    mv -v "$OLD_FILENAME" "$NEW_FILENAME"
done < <(find directory_name -type f)
(
IFS=$'\n'
for OLD_FILENAME in $(find directory_name -type f)
do
   NEW_FILENAME=`echo "$OLD_FILENAME"|tr [:upper:] [:lower:]`
   mv -vi "$OLD_FILENAME" "$NEW_FILENAME"
done
)
希望这有帮助