Удаление всех изображений, сделанных с помощью конкретной камеры.

Что мне нужно:

Команда, которая удаляет все файлы .jpg в текущем каталоге и подкаталогах, которые были сделаны с помощью камеры RaspberryPi.

(В идеале это должно работать с Git Bash для Windows, но это сделает его более удобным и, следовательно, необязательным.)

То, что я пробовал:

Я уже использовал find . -name "*.jpg" -size 24k -delete find . -name "*.jpg" -size 24k -delete для удаления эскизов, и я узнал, что file утилита может отображать производителя камеры ( manufacturer=RaspberryPi ).

Пример:

 $ file f49100889.jpg f49100889.jpg: JPEG image data, Exif standard: [TIFF image data, big-endian, direntries=10, height=0, manufacturer=RaspberryPi, model=RP_OV5647, xresolution=156, yresolution=164, resolutionunit=2, datetime=2015:06:09 08:15:03, width=0], baseline, precision 8, 1920x1080, frames 3 

Задний план:

Файловая система NTFS-Drive повреждена, и я восстановил файлы с помощью testdisk / photorec. Теперь у меня есть файлы, но они потеряли некоторые метаданные, такие как структура каталогов и имена файлов. Я уже восстановил наиболее важные файлы из резервной копии и хотел бы как можно больше сохранить оставшиеся данные. Мне нужно удалить некоторые файлы мусора, чтобы упростить работу с остальными.

Можно ли объединить эти команды для достижения моей цели? Если да, то как? Есть ли лучший способ сделать это?

Заранее спасибо!

One Solution collect form web for “Удаление всех изображений, сделанных с помощью конкретной камеры.”

Вот простой способ. Ниже приведено содержимое скрипта с именем script.sh в ~/bin/ .

 #!/usr/bin/env bash if (file "$1" | grep "RaspberryPi"); then echo "rm $1" # <- safety first: just echo, no delete # rm "$1" # <- uncomment to delete, leave the quotes fi 

Дайте ему разрешение на выполнение ( chmod 0750 ~/bin/script.sh ). Затем найдите файлы и передайте результаты по одному (используя \; not + ) для скрипта.

 find ~ -iname *.jpg 2>/dev/null -exec ~/bin/script.sh {} \; 

Другим инструментом является identify из ImageMagick. Этот инструмент описывает характеристики изображения и считывает данные изображения, включая EXIF. Это будет намного медленнее, чем file , но на изображении гораздо больше информации, чем информация, предоставленная file . Это может помочь, когда file не описывает данные, которые будут найдены. Его использование может быть следующим.

 identify -verbose "$file" | grep "RaspberryPi" 

Мы можем проверить код возврата grep (после использования file или identify в выражении if выше) путем отображения его кода возврата. От man grep :

Обычно статус выхода равен 0, если выбрана линия, 1, если линии не выбраны, и 2, если произошла ошибка.

Объедините эту информацию со знанием того, что $? переменная содержит код возврата / значение или код выхода / значение самой последней выполненной команды.

 file image.jpg | grep "RaspberryPi" echo $? 

Строки, приведенные выше, создавали бы нулевое соответствие – для результатов file , содержащих строку «RaspberryPi».

 file image.jpg | grep "Rumpelstiltskin" echo $? 

Строки, приведенные выше, выдавали бы значение 1 – нет совпадения – при условии, что file не находит соответствия для строки «Румпельстильцкин».

  • Отступ, как первая строка
  • Как предотвратить повторное уведомление по электронной почте с помощью bash
  • Как я могу определить, какое устройство или имя файла я перенаправляю
  • Считать общее количество строк до / после соответствия шаблону
  • Ssh в поле, запустить команду, вывести данные в файл, а затем перейти к следующему IP-адресу
  • В bash я должен спросить каждую строку из первого файла csv, второго файла csv и ответов, помещенных в третий файл csv
  • Оболочка сценария скрипта условно
  • скрипт i3status, который сам по себе изменяет свой текст
  • Соответствие парам «значение ключевого слова» из полуструктурированного ввода
  • почему Bash не будет добавлять мои переменные вместе?
  • Получить имя устройства подключенного USB-диска
  • Linux и Unix - лучшая ОС в мире.