2009-10-27 2 views
0

У меня есть тысячи файлов, которые мне нужно переименовать в следующем формате. 2008: 09: 18: 17: 45: 48-alfanumeric-alfanumeric.wav Первая часть - это дата.Переименуйте кучу файлов в debian

Ex. 2008: 09: 18: 17: 45: 48-703-s.wav

хотите переименовать его:

20080918.174548.703.s.wav

В основном удалить ':' и сделать более понятный для человека формат и легче разбить.

Я знаю, что переименование - это то, что ищет, но регулярное выражение не работает. Я печатаю:

переименовании «ы/(\ d): (\ d): (\ d): (\ d): (\ d): - (.?) (\ D) - WAV/$ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8.wav /» ./*

ответ

1

Вам необходимо учитывать множественность:

rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./* 
2
rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./* 

должен (.?). быть использованным - в вашей версии вы всегда будете только соответствовать одной цифре. Кроме того, не нужно избегать:.

1

Если это то, что вы только собираетесь сделать один раз, я бы это так:

1) Ls файлы в новый файл: Ls каталогу_данных> mytmp 2) редактировать mytmp с ваш любимый редактор. 2a удалите любые строки, которые не являются файлами данных, о которых вы беспокоитесь, например «.». и ".." 2b отредактируйте каждую строку в команде оболочки, чтобы переименовать файл. Мне нравится emacs, а будет строить макрос клавиатуры: кликнуть имя файла, вставить «mv», вставить имя файла , вставить пробел, вставить имя файла еще раз, отредактировать вставленное имя файла в желаемого формата. 2c save 3) run sh < mytmp

Done! Не изящный, утомительный, если ваш редактор не поддерживает макросы или аналогичную функциональность, но гарантирует работу и git-er-done.

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