У меня есть куча изображений, которые каким-то образом переименованы из 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
попробуйте rename -v 's/\.jpg_backup$/\.jpg/' *.jpg_backup
-v выдает подробный вывод. см. здесь Как переименовать
В терминале перейдите к каталогу, где те файлы (с 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
. Последний смотрит в символьных ссылках на каталоги также.