Как переименовать все файлы в нижний регистр? - PullRequest
104 голосов
/ 17 октября 2011

У меня есть, например, TREE.wav, ONE.WAV. Я хочу переименовать его в tree.wav, one.wav. Как переименовать все файлы в нижний регистр?

Ответы [ 2 ]

329 голосов
/ 17 октября 2011

Если вам удобно работать с терминалом:

  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.

(Спасибо @bavarious в твиттере за несколько исправлений и спасибо Джону Уитли ниже за то, что он сделал это безопаснее на случайнечувствительные файловые системы.)

3 голосов
/ 26 сентября 2018

Вопрос, который задают, является общим, а также важным, поэтому я хотел бы дать более общий ответ:

Простейший случай (безопасный в большинстве случаев и в Mac OS X, но читайте дальше):

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

Вам также нужно обрабатывать пробелы в именах файлов (любая ОС):

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...