Вывод этой команды Linux

Вывод этой команды Linux

Пожалуйста, есть ли у кого-нибудь идеи о выводе этой команды? Я много гуглил об этом, но ничего полезного не нашел.

find . -type f -exec grep -H PATH {} \;

заранее спасибо

решение1

Команда

find . -type f -exec grep -H PATH {} \;

находит все обычные файлы ( -type f) в текущем каталоге ( .) или ниже и для каждого такого файла выполняет команду grep -H PATH {}с {} заменой на полный путь к файлу относительно текущего каталога.

Параметр -Hto grepнестандартен, но часто реализуется и гарантирует, что каждая совпадающая строка будет предваряться путем к файлу, в котором она была найдена. grep PATH /dev/null {}Вместо этого вы можете изменить команду на , чтобы принудительно grepвсегда выводить путь к файлу, содержащему совпадающие строки (стандартно grepэто происходит, когда в командной строке указано не менее двух файлов).

В качестве шаблона используется grepстрока PATH.

Подведем итог: команда находит и выводит все строки из всех обычных файлов в текущем каталоге или ниже, которые упоминают подстроку PATHгде-либо. Каждая строка предваряется путем к файлу, содержащему строку.

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

./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_NM:FILEPATH=/usr/bin/nm
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_STRIP:FILEPATH=/usr/bin/strip

Команду можно сделать более эффективной, если разрешить ее grepзапуск для максимально возможного количества файлов одновременно, пакетами, а не по одному разу для каждого файла:

find . -type f -exec grep -F -e PATH /dev/null {} +

Я также взял на себя смелость немного изменить grepкоманду, добавив, -Fчтобы она обрабатывала строку PATHкакнитьа не как регулярное выражение. Опция -eпросто используется для указания того, что следующим аргументом является шаблон (полезно, если шаблон позже будет изменен на что-то, что может начинаться с тире, например).

Изменение с \;на +в конце -execаргумента предиката заставляет его собирать найденные пути в пакеты вместо того, чтобы запускать утилиту для каждого из них.

Связанный контент