Переименование нескольких файлов с помощью make
Чтобы заменить пробелы в названиях файлов, я использовал возможности команды make, создав Makefile следующего содержания:
WAVRENAMEFILES = `ls -1 *.wav | echo "*.wav"`
MP3RENAMEFILES = `ls -1 *.mp3 | echo "*.mp3"`
MP3FILES = $(patsubst %.wav,%.mp3,$(wildcard *.wav))
all: $(MP3FILES)
%.mp3: %.wav
lame -b 128 --cbr -q 0 -m s $< $@
clean:
rm -f $(MP3FILES)
m3u:
ls *.mp3 >made.m3u
rename-wav:
for fn in $(WAVRENAMEFILES) ; do if [ "$$fn" != "$${fn// /_}" ] ; then echo "Renaming $$fn to $${fn// /_}" ; mv "$$fn" ./$${fn// /_} ; fi ; done
rename-mp3:
for fn in $(MP3RENAMEFILES) ; do if [ "$$fn" != "$${fn// /_}" ] ; then echo "Renaming $$fn to $${fn// /_}" ; mv "$$fn" ./$${fn// /_} ; fi ; done
Этот Makefile я использую для кодирования wav-файлов в mp3, а также для переименования wav и mp3 файлов. Для этого я копирую его в папку с файлами, открываю эмулятор терминала и использую следующие команды:
чтобы кодировать wav в mp3:
$ make
чтобы заменить пробелы на символы_подчёркивания в wav-файлах:
$ make rename-wav
чтобы заменить пробелы на символы_подчёркивания в wav-файлах:
$ make rename-mp3
чтобы создать список воспроизведения:
$ make m3u
чтобы удалить mp3-файлы:
$ make clean
Эдакий несколько левонарезной способ, конечно, но работает. Секрет успеха этого рецепта в том, что имена файлов перед тем, как попасть на обработку for, заключаются в кавычки. Более технологично было бы делать переименование, используя awk, но этот Makefile я изначально сделал для того, чтобы удобно кодировать в mp3 альбомы с Audio CD для прослушивания в MP3-плеере.