Есть ли способ переименовать несколько файлов в одной команде. В Windows мне известна команда

ren *.* *.jpg

Есть ли подобная команда в Mac OS X, которую я мог бы запустить, вместо того, чтобы нажимать ввод для каждого отдельного файла и делать переименование.

3 ответа3

3

Хотя использование циклов find и for эффективно, Perl обычно поставляется с /usr/bin/rename (по крайней мере, в Linux), но я не уверен, что он у вас есть в MacOSX (по крайней мере, в моем старом 10.3).

Если у вас его нет, вы можете получить этот скрипт из CPAN. И вот как это использовать:

$ ls
   tata.jpg  titi.jpg  toto.jpg  truc  tutu
$ rename -v 's/\.jpg$/.JPG/' *.jpg
   tata.jpg renamed as tata.JPG
   titi.jpg renamed as titi.JPG
   toto.jpg renamed as toto.JPG
$ ls
   tata.JPG  titi.JPG  toto.JPG  truc  tutu
2

Это будет работать (и приведет к гораздо большей гибкости):

shopt -s extglob
for file in *.*; do mv ${file} ${file/%.*([^.])/.jpg}; done

Существуют также нестандартные инструменты командной строки Unix, которые могут сделать работу более лаконично.

1

С Unix-подобными системами проще найти

find ./  

(попробуйте сначала, чтобы убедиться, что ваш список файлов выглядит так, как вы ожидали

find ./ -exec mv ${} ${}.jpg \; 

Это добавит .jpg в конец каждого найденного файла. Регулярное выражение для изменения окончательного расширения, а не просто для добавления, оставлено читателю в качестве упражнения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .