По сути, алгоритм равен для каждого файла в текущем каталоге и во всех его подкаталогах, получить информацию о файле, найти слово «изображение» и напечатать строки, соответствующие
Я разобью команду на части ...
find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'
find
- пройдусь по иерархии файлов и выведу список файлов .
- началов текущем каталоге -name '*'
- рассмотреть все имена файлов -exec file {} \;
- для каждого файла, возвращенного find
, выполнить file
, чтобы определить тип файла.{}
- это заполнитель для имени, возвращенного из find
|
- передать результаты предыдущей команды в следующую команду grep
- выполнить регулярное выражениесовпадение с образцом в каждой строке, переданной по -o
- сокращение от --only-matching
;печатает только совпадающую часть строк -P '^.+: \w+ image'
- ищет указанный шаблон, который по существу говорит: строки, содержащие слово «изображение» .Google "regex cheatsheet", чтобы получить более глубокое понимание.
Вы можете просмотреть полные документы (справочные страницы) для каждого отдельного компонента, запустив man find
, man file
и man grep
.Информация, отображаемая с помощью https://explainshell.com/ (которую @Cyrus упомянул в комментарии) поступает со справочных страниц - это удобный ярлык для поиска именно тех деталей, которые вам нужны.
Вы также можете запускать командыотдельно, чтобы поэкспериментировать: Запуск find . -name '*'
, file <file name>
и find . -name '*' -exec file {} \;
поможет визуализировать происходящее.