Saída deste comando Linux

Saída deste comando Linux

Por favor, alguém tem uma ideia sobre a saída deste comando, pesquisei muito sobre isso no Google, mas não consigo encontrar nada útil

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

desde já, obrigado

Responder1

O comando

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

encontra todos os arquivos regulares ( -type f) no diretório atual ( .) ou abaixo, e para cada um desses arquivos é executado grep -H PATH {}substituído {} pelo nome do caminho completo do arquivo relativo ao diretório atual.

A -Hopção para grepnão é padrão, mas é frequentemente implementada e garante que cada linha correspondente seja prefixada pelo nome do caminho do arquivo em que a linha foi encontrada. Você pode alterar o comando para grep PATH /dev/null {}em vez de forçar grepa saída sempre do nome do caminho do arquivo que contém as linhas correspondentes (o padrão grepfaz isso quando pelo menos dois arquivos são fornecidos na linha de comando).

O padrão usado grepé a string PATH.

Para resumir: O comando encontra e gera todas as linhas de todos os arquivos regulares no diretório atual ou abaixo, que mencionam a substring PATHem qualquer lugar. Cada linha é prefixada pelo nome do caminho do arquivo que contém a linha.

Um trecho da saída que obtenho ao executar isso em meu diretório pessoal:

./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

O comando poderia se tornar mais eficiente permitindo grepa execução de tantos arquivos quanto possível de uma vez, em lotes, em vez de uma vez para cada arquivo:

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

Também tomei a liberdade de alterar grepum pouco o comando aqui, adicionando -Fpara que ele trate a string PATHcomo umcordaem vez de uma expressão regular. A -eopção é usada apenas para indicar que o próximo argumento é o padrão (útil se o padrão for posteriormente alterado para algo que pode começar com um travessão, por exemplo).

É a mudança de \;para +no final do -execargumento do predicado que faz com que ele colete os nomes de caminho encontrados em lotes, em vez de executar o utilitário para cada um deles.

informação relacionada