Переименование глобуса в bash - PullRequest
5 голосов
/ 04 мая 2011

Я довольно новичок в bash, так что извините, если это своего рода основной вопрос. Я пытался переименовать кучу mp3-файлов, добавив к именам файлов 1-, а mv *.mp3 1-*.mp3, к сожалению, не сработало. Поэтому я попытался написать сценарий, сначала с помощью echo для проверки команд:

for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done

Который, кажется, выводит команды, которые мне нравятся, поэтому я удалил эхо, изменив команду на

for f in *.mp3 ; do mv \'$f\' \'1-$f\'; done

Что не удалось. Затем я попытался отправить команды дальше так

for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done | /bin/sh

Это сработало, но если бы кто-нибудь мог объяснить мне, почему не работает средняя команда, мне было бы интересно узнать. Или, если есть более элегантный однострочник, который будет делать то, что я хотел, мне было бы интересно увидеть это тоже.

Ответы [ 2 ]

7 голосов
/ 04 мая 2011

Пробный прогон:

rename -n 's/^/1-/' *.mp3

Удалите -n, если он выглядит правильным для запуска команды. man rename для деталей.

7 голосов
/ 04 мая 2011

Я думаю, вам нужно изменить команду на

for f in *.mp3 ; do mv "$f" "1-$f"; done

В противном случае вы бы передали что-то вроде 'file1.mp3' и '1-file1.mp3' на mv (включая одинарные кавычки).

...