Использование текстового списка для пакетного переименования файлов

Предположим, у меня есть папка с примерно 20 файлами (скажем, фотографиями, которые я сделал во время поездки), и я хочу переименовать их за один раз, только нет никакого конкретного выражения Perl, которое я хочу использовать (например если бы я хотел добавить дополнительный текст к каждому имени, которое не является частью метаданных отдельных файлов, таких как описания и / или комментарии).

И, предположим, мне легче сгенерировать текстовый файл с тем, что я хочу, чтобы имя каждого файла было (или, если предпочтительнее, списком «до и после»)

.

Есть ли способ применить изменения, подразумеваемые в этом текстовом списке, к рассматриваемой папке?

5
задан 28 May 2017 в 06:10

2 ответа

Поместите файл списка file.list с новыми именами в последовательном порядке с расширением как file.list в папку с файлами, которые нужно переименовать, например,

newname file x.jpg
newname file y.jpg
newname file z.jpg

Измените каталог на рабочий каталог.

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

Файл undo_rename.sh будет создан в домашней папке, чтобы отменить при необходимости.

rm ~/undo_rename.sh; count=1; for name in *.ext; do echo "mv" '"'`awk "NR==$count{print;exit}" file.list`'"' '"'$name'"' >> ~/undo_rename.sh; chmod +x ~/undo_rename.sh; mv "$name" "`awk "NR==$count{print;exit}" file.list`"; ((count+=1)); done
0
ответ дан 28 May 2017 в 06:10

Это похоже на работу для xargs.

Если ваш файл отформатирован так:

old_file1 new_file1
old_file2 new_file2

, тогда вы можете сделать xargs -a your_file -n 2 mv.

0
ответ дан 28 May 2017 в 06:10

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

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