Как перечислять только файлы JPEG из корня ниже с помощью командной строки?

Я ищу метод для поиска только файлов JPEG / С моим ограниченным знанием Linux я пришел к этому:

  1. перечислите все пути, существующие из корня ниже, с помощью find /
  2. перетащите результат в следующую команду и выполните команду file на каждом найденном пути с xargs file
  3. В результате команды file содержится строка JPEG, я подумал, что возможно, каким-то образом IF-оператор будет фильтровать только JPEG-файлы: if (JPEG, содержащиеся в выводе команды файла) {показать аргумент файла}

еще раз:

 find / | xargs file | "If statement" 

Не могли бы вы исправить меня, дать мне подсказку, как выполнить задачу или дать решение?

3 Solutions collect form web for “Как перечислять только файлы JPEG из корня ниже с помощью командной строки?”

Если вы хотите перечислить файлы, содержащие изображение в формате JPEG, независимо от расширения в имени файла, вы можете использовать file find + для отображения файлов с типом mime image/jpeg :

 find . -type f -exec sh -c ' file --mime-type "$0" | grep -q image/jpeg\$ && printf "$0\n" ' {} \; 

или

 find . -type f -exec sh -c ' mt=$(file --brief --mime-type "$0") [ -z "${mt#image/jpeg}" ] && printf "$0\n" ' {} \; 

Для начала вы можете распечатать файлы с расширением .jpg с:

 sudo find / -name *.jpg -print 

Посмотрите, как это себя ведет, измените его, и вы можете затем передать вывод в другую функцию, а не просто распечатку, если хотите. Например, если вы хотите разрешить также .JPG :

 sudo find / -iname "*.jpg" 

Это напечатает пути ко всем файлам с типом mime- образа / jpeg .

 find / -type f -exec file --no-pad --mime-type {} + 2>/dev/null \ | awk '$NF == "image/jpeg" {$NF=""; sub(": $", ""); print}' 

Несколько замечаний:

  • используйте -exec command {} + вместо -exec command {} \; чтобы только один раз вызвать file (вместо одного для каждого файла)
  • используйте опцию --no-pad чтобы обеспечить выход file в согласованном формате (чтобы упростить его синтаксический анализ)
  • используйте 2>/dev/null для подавления stderr find , только необходимо, потому что запуск команды из / приведет к многочисленным ошибкам «Разрешения на отказ», которые будут загромождать консоль
  • Как переносить переменные из другого Makefile в сценарий оболочки
  • Могу ли я помещать диапазоны в параметры?
  • Использование команды eval дважды
  • Команда для снятия скриншота с нового файла
  • хотите su без пароля внутри сценария оболочки
  • UNIX be-spoke Shell-Script / Команды
  • В ShellScript, как вызвать функцию после завершения уже запущенной функции?
  • Выберите строки, начинающиеся с определенных номеров
  • Передайте некоторые указания о логике ветвления в сценарий
  • Команда для перечисления всех имен пользователей на сервере Linux
  • Используйте только строки, содержащие x или меньшее количество чисел. TXT-файл
  • Interesting Posts

    Можно ли сохранять ssh-соединение в bash-скрипте вместо $ (ssh user @ ip command) каждый раз?

    Эквивалент iwlist, чтобы увидеть, кто вокруг?

    atop + что определить, когда / var / log / atop / atop_log должен быть создан

    У меня есть диск с 24 ГБ и жесткий диск 1 Тб. Как получить Ubuntu для установки на моем 24 ГБ и моем домашнем каталоге на 1 ТБ

    Файлы, созданные в текущем сеансе оболочки

    Установите отображение bash , чтобы не отображать текст vim после выхода

    Настройка переменных окружения в Ubuntu

    Замените пробелы в начале строки на "-"

    PPTP через IP-таблицы

    Где находится журнал динамического туннельного трафика ssh?

    Вращение catalina.out с использованием формата timestamp с использованием logrotate. как каталина. $ date.out

    Обновлять глобальные админы firefox автоматически

    Не удается заставить startX / Xorg работать во FreeBSD 8.1

    экспортированная переменная исчезает, когда я открываю новый терминал

    Как прокручивать в терминале по строке в терминале GNOME 2.31.3?

    Linux и Unix - лучшая ОС в мире.