如何将所有文件重命名为小写?

时间:2011-10-16 20:18:24

标签: macos file bash

我有例如TREE.wav,ONE.WAV。我想将它重命名为tree.wav,one.wav。如何将所有文件重命名为小写?

4 个答案:

答案 0 :(得分:326)

如果您对终端感到满意:

  1. 打开Terminal.app,键入cd,然后将包含要重命名的文件的文件夹拖放到窗口中。
  2. 要确认您位于正确的目录中,请键入ls并按Enter键。
  3. 粘贴此代码并按Enter键:

    for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
    
  4. 要确认所有文件均为小写,请键入ls并再次按Enter键。
  5. (感谢Twitter上的@bavarious提供了一些修复,并感谢下面的John Whitley在不区分大小写的文件系统上使其更安全。)

答案 1 :(得分:3)

鱼壳版本:

for old in *
    set new (echo $old | tr '[A-Z]' '[a-z]')
    mv $old $new
end

答案 2 :(得分:1)

对于那些要在当前目录和子目录中小写的 所有文件的人:

# lower case all files in current dir & subdirs
for d in ./**/ ; do (cd "$d" &&  for x in ./*/ ; do (cd "$x" && for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done); done); done

#list all directories
for f in ./**/ ; do echo $f; done

# lower case all files in a directory
for x in ./*/ ; do (cd "$x" && for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done); done

答案 3 :(得分:0)

提出的问题很笼统,也很重要,所以我想提供一个更笼统的答案:

最简单的情况(大多数情况下是安全的,在Mac OS X上是安全的,但请继续阅读):

component.ts

您还需要处理文件名中的空格(任何操作系统):

for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done

在区分大小写的文件系统中,您需要安全地处理仅因大小写而不同的文件名,并且不覆盖目标文件(例如Linux):

IFS=$'\n' ; for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done

关于Mac OS X的注意事项:

Mac的文件系统不区分大小写,保留大小写。

但是,无需按照已接受的答案和注释中的建议来创建临时文件,因为开头Outh不能存在仅因大小写而不同的两个文件名。

显示此内容

for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done