Сценарий Bash к sepate и перемещению дата к передней стороне имени файла

У меня есть тысяча avi, и jpg смешал файлы, которые назвали так

01 09 52 PM 27-03-2019-A.avi
01 09 52 PM 27-03-2019-A.jpg
01 09 55 PM 26-03-2019-A.avi
01 09 55 PM 26-03-2019-A.jpg

Я хочу поместить дату сначала как так

27-03-2019-A 01 09 52 PM.avi

Как я могу сделать это?

-1
задан 31 March 2019 в 00:33

1 ответ

С file-rename от rename Install rename пакет:

file-rename -n 's/(.*PM) (.*-A)/$2 $1/' *

Это печатает изменения сначала, удалите -n отметьте для фактического выполнения действия. sвыражение замены получает первую строку, заканчивающуюся в “PM” и следующее окончание в “-A” (без пространства между ними) в двух группах, и заменяет их собой в обратном порядке и пространством между ними. Отметьте это * берет каждый файл в текущем каталоге, измените его, если Вы хотите соответствовать подмножеству, например. *-A.* для каждого файла, имя которого содержит “-A”..

Если Вы не хотите устанавливать что-нибудь, с чем можно сделать переименование bash и mv:

for i in *; do
  echo mv -i "$i" "${i:12:12} ${i:0:11}.${i/*.}"
done

Это циклично выполняется по файлам, печатающим mv команды для переименования, удалите echo на самом деле переименовать файлы. Это использует bash Расширение параметра для получения соответствующих строк от входного имени файла.

Пример выполняется

Обратите внимание, что я имею rename связанный с file-rename использование системы альтернатив.

$ touch "01 09 52 PM 27-03-2019-A.avi"
$ rename -n 's/(.*PM) (.*-A)/$2 $1/' *
rename(01 09 52 PM 27-03-2019-A.avi, 27-03-2019-A 01 09 52 PM.avi)
$ rename 's/(.*PM) (.*-A)/$2 $1/' *
$ ls
27-03-2019-A 01 09 52 PM.avi
$ rm 27-03-2019-A\ 01\ 09\ 52\ PM.avi
$ touch "01 09 52 PM 27-03-2019-A.avi"
$ for i in *;do echo mv "$i" "${i:12:12} ${i:0:11}.${i/*.}";done
mv 01 09 52 PM 27-03-2019-A.avi 27-03-2019-A 01 09 52 PM.avi
$ for i in *;do mv "$i" "${i:12:12} ${i:0:11}.${i/*.}";done
$ ls
27-03-2019-A 01 09 52 PM.avi
0
ответ дан 25 October 2019 в 07:33

Другие вопросы по тегам:

Похожие вопросы: