Как переименовать все файлы в папке с именем, заканчивающимся на & ldquo; _backup & rdquo;

У меня есть куча изображений, которые каким-то образом переименованы из myimage.jpg в myimage.jpg_backup, поэтому изображения на моем сайте больше не загружаются. Как бы я рекурсивно нашел все изображения, заканчивающиеся на _backup, и удалил только часть _backup, сохранив оставшуюся часть имени файла?

Я попробовал что-то вроде этого:

sudo find . -name "*.jpg_backup" -exec rename -n 's/_backup$//' *.jpg_backup ';'

, но это дает мне ошибку:

Can't rename *.jpg_backup *.jpg: No such file or directory
4
задан 19 July 2013 в 21:44

2 ответа

попробуйте rename -v 's/\.jpg_backup$/\.jpg/' *.jpg_backup -v выдает подробный вывод. см. здесь Как переименовать

0
ответ дан 19 July 2013 в 21:44

В терминале перейдите к каталогу, где те файлы (с cd /path/to/folder). Если файлы не содержат пробельных или специальных символов \[*?, выполните следующую команду:

for file in `find . -name *.jpg_backup` ; do mv "$file" "${file%_backup}"; done

Если Вы думаете, что у Вас есть имена файлов, содержащие пробелы или globbing символы, используйте:

find . -type f -name '*.jpg_backup' -print0 \
| while IFS= read -r -d '' file ; do mv -- "$file" "${file%_backup}"; done

или:

shopt -s globstar; 
for file in /path/to/folder/**/*.jpg_backup ; do mv -- "$file" "${file%_backup}"; done

Вышеупомянутые команды рекурсивно найдут все *.jpg_backup файлы от текущей папки и подпапок и переименуют их к *.jpg. Последний смотрит в символьных ссылках на каталоги также.

3
ответ дан 19 July 2013 в 21:44

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

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