поиск и переименование large *.jpg в *.jpeg

#bash #find #rename

#bash #Найти #переименовать

Вопрос:

У меня есть большая и беспорядочная коллекция файлов — эй, у кого их нет — некоторые из них представляют собой большие файлы формата JPG (в данном случае это произвольное число, скажем, 2,5 МБ), которые я хочу переименовать — я хочу изменить расширение с *.jpg на *.jpeg.

Я бы хотел сделать это с помощью сценария оболочки, который я запускаю BASH 3.2.39(1) , и у меня такое чувство, что это «простая» задача с find , увы, я нахожу синтаксис find трудным для запоминания, а справочную страницу невозможно прочитать.

Любая помощь с этим будет высоко оценена.

Комментарии:

1. Размер файлов здесь не важен.

2. Вы хотите сказать, что хотите переименовывать только файлы размером более 2,5 МБ?

3. Я думаю, у Хаммарстрома это получилось; да, я хочу переименовать файлы размером более 2,5 МБ или каким-то другим пороговым значением.

Ответ №1:

Поиск и переименование больших файлов может быть выполнено следующим образом:

find . -size 2500k -exec rename -s .jpg .jpeg '{}' ';'

Комментарии:

1. Я понимаю, для Unknown option: s чего -s предназначена опция?

2. @Dan: Зависит от того, какой rename файл у вас на компьютере. Дистрибутивы на основе Debian используют perl prename . Используйте rename.ul вместо этого. Смотрите bugs.debian.org/cgi-bin/bugreport.cgi?bug=439935

3. спасибо @christoffer-hammarstrom; Я использовал rename.ul без -s флага, и это сработало; в то время как с -s флагом это не сработало.

4. @Dan не могли бы вы, пожалуйста, отметить этот ответ как правильный? Поскольку вы написали, что он сделал то, что должен, я думаю, это был правильный ответ.

Ответ №2:

Какую ОС вы используете? В большинстве репозиториев есть приложение под названием mmv, которое идеально подходит для такого рода задач..

использование:
mmv *.jpg #1.jpeg

Комментарии:

1. Однако это не влияет на размер файла.

Ответ №3:

Установите rename (стандартный инструмент в вашей установке Linux или с помощью homebrew для Mac), затем:

 rename -s .jpg .jpeg *
  

или, если у вас также есть файлы в подкаталогах:

 rename -s .jpg .jpeg $(find . -name '*.jpg')
  

Комментарии:

1. Однако это не влияет на размер файла.

Ответ №4:

 for i in *.jpg
do
 new_name= $(echo $i|sed 's/.jpg/.jpeg/')
 mv $i $new.name
done
  

Комментарии:

1. опять же … как это различает в зависимости от размера файла?