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

问题描述 投票:0回答:6

如果您对终端感到满意:

macos file bash
6个回答
470
投票
open terminal.app,键入

cd

,然后拖放包含要重命名为窗口的文件的文件夹。
    要确认您在正确的目录中,键入
  1. ls
    并点击Enter.
    ther this代码并点击输入:
  2. for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
    
    
  3. 要确认您的所有文件都是较低的,请键入
  4. ls

    并重新点击Enter。

    (感谢@bavarious在Twitter上的一些修复程序,并感谢下面的John Whitley对案例不敏感的文件系统更安全。)
  5. 提出的问题是一般的,也很重要,因此我希望提供一个更普遍的答案:
  6. 简单情况(大多数情况下安全,并且在Mac OS X上安全,但请继续阅读):

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


22
投票

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

您需要安全处理仅在情况敏感文件系统中因情况而差异而不是覆盖目标(例如Linux)的文件名:

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

关于Mac OS X的注意:

MAC的文件系统是对病例敏感的,病例保护的。

但是,正如接受的答案和评论中建议的那样,无需创建临时文件,因为两个只有因情况而异的文件名不存在,
ref

.

显示以下内容:

$ mkdir test $ cd test $ touch X x $ ls -l total 0 -rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 X $ mv X x $ ls -l total 0 -rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 x

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

对于那些想要在
电流目录和子目录中降低

4
投票
all

文件的人


4
投票

简单的解决方案是通过在循环中使用tr命令。 for file in ./* ; do mv "$file" "$(tr '[:upper:]' '[:lower:]' <<<"$file")" done 您可以在此处了解有关

tr
命令的更多信息。
    

0
投票
我认为这是最好的解决方案。

for i in *; do mv "$i" "${i,,}"; done


easier,Shorter,Neater

    
非常易于使用Mac Automator程序。


0
投票
选择“操作”,然后“文件和文件夹”,然后将“复制Finder项目”添加到工作流程中。指定您的结果应在其中出现的文件夹。 工作流程中的“重命名查找器项目”。将“全名”的“更改案例”指定为“较低案例”。 保存工作流程。 现在,只需将文件拖放到第一个文件夹中,然后将所有较低的情况重命名为第二个文件夹。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.