2013-05-15 5 views
0

Я искал все, как использовать функцию {} в именах файлов unix. Например, у меня есть каталог, который имеет подкаталоги, названные как ID #. В каждом поддиректории есть записанный аудиофайл, названный как конкретный идентификатор ID вопроса. Следующая команда:Какое использование фигурных скобок в командах unix?

for file in */1-01*; do echo "$file"; done

перечислит имена звуковых файлов в каждом подкаталоге текущего каталога. Это дает мне список:

809043250/1-01-20131.wav 
813777079/1-01-20131.wav 
817786199/1-01-20131.wav 
827832538/1-01-20131.wav 
834820477/1-01-20131.wav 

Я хочу, чтобы переименовать каждый из указанных файлов .wav как другой ID #, поэтому он должен в конечном итоге, как это:

809043250/5001.wav 
813777079/5001.wav 
817786199/5001.wav 
827832538/5001.wav 
834820477/5001.wav 

Так как я используйте обозначение ${file/firstOccurance/replaceWith}, если я хочу использовать команду mv, чтобы сохранить идентификатор человека (809043250, 813777079 и т. д.) и первый /, но снять с 1-01-20131.wav и закрепить на 5001.wav?

Я не знаю, как это искать на google. Это называется регулярными выражениями (я так не думаю ...)? Обозначение скобок? шаблоны имен файлов? Кто-нибудь знает о хорошем объяснении этого?

Спасибо!

ответ

1

В bash, одна вариация на обозначение называется Brace Expansion. Это генерирует имена файлов.

Другой вариант обозначения обозначен Shell Parameter Expansion. Здесь bash предоставляет замену regex-ish ${var/match/replace}.

Для ваших целей, необходимо расширение paremeter:

$ x="809043250/1-01-20131.wav 
> 813777079/1-01-20131.wav 
> 817786199/1-01-20131.wav 
> 827832538/1-01-20131.wav 
> 834820477/1-01-20131.wav" 
$ for file in $x; do echo $file ${file/1-01-20131/5001}; done 
809043250/1-01-20131.wav 809043250/5001.wav 
813777079/1-01-20131.wav 813777079/5001.wav 
817786199/1-01-20131.wav 817786199/5001.wav 
827832538/1-01-20131.wav 827832538/5001.wav 
834820477/1-01-20131.wav 834820477/5001.wav 
$ 
+0

СПАСИБО !!! Если google - это карта, не зная, что ключ для поиска очень расстраивает! К счастью, люди могут переводить неверные ключи для исправления и возвращать ценности! – ejsuncy

Смежные вопросы