Как я могу рекурсивно снять изоляцию с exif информации из всех изображений в каталоге?

for i in *.jpg; do echo "Processing $i"; exiftool -all= "$i"; done

Я должен адаптировать эту строку кода, которая разделяет всю exif информацию из изображений в каталоге. Мне нужен он к;

  • не перестали работать, если текущий каталог пуст
  • будьте рекурсивными для контакта с подкаталогами
  • покройте *.gif *.jpeg *.png также

Кто-либо мог указать на меня в правильном направлении?

5
задан 12 September 2016 в 09:40

2 ответа

Нет никакой потребности написать сценарий этого, ExifTool может сделать это отдельно, и это будет намного быстрее, чем цикличное выполнение через объекты.
exiftool -r -all= -ext jpg -ext gif -ext png /path/to/top/directory/

-r рекурсивно вызывают через подкаталоги
-ext …, предел обработал файлы к указанным расширениям, удалите эти объекты для обработки всех файлов, для которых Exiftool может удалить метаданные.

10
ответ дан 23 November 2019 в 08:48

Так как exiftool потрясающий, то в этом нет необходимости, но в принципе вы можете сделать с find что-то вроде этого ...

Сначала убедитесь, что ваш поиск находит то, что вы хотите (используя -iname, чтобы сделать поиск нечувствительным к регистру, так как .JPG и .jpg и т. Д. Распространены)

find . -iname '*.jpg' -or -iname '*.png' -or -iname '*.jpeg' -or -iname '*.gif' 

if выведет список найденные файлы с путями, начинающимися здесь (включая подкаталоги)

, затем повторите добавление команды, чтобы воздействовать на файлы, найденные в конце | xargs exiftool -all=

find . -iname '*.jpg' -or -iname '*.png' -or -iname '*.jpeg' -or -iname '*.gif' | xargs exiftool -all=

или безопаснее, если в именах файлов есть пробелы, используйте null в качестве разделителя вместо пробелов:

find . -iname '*.jpg' -print0 -or -iname '*.png' -print0 -or -iname '*.jpeg' -print0 -or -iname '*.gif' -print0 | xargs --null exiftool -all=

Если ничего не совпадает (например, каталог пуст), то он ничего не делает

. является текущим рабочим каталогом. Если вас там нет, замените find . на find /path/to/parent/directory

1
ответ дан 23 November 2019 в 08:48

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

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