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
)
希望这有帮助