Вопрос

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

Бывший. 2008:09:18:17:45:48-703- s.wav

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

20080918.174548.703.s.wav

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

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

переименовать 's/(\d):(\d):(\d):(\d):(\d):(\d):(\d)-(.?)-(.?). wav/$1$2$3.$4$5$6.$7.$8. wav/' ./*

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top