Salida de este comando Linux

Salida de este comando Linux

¿Alguien tiene una idea sobre el resultado de este comando? He buscado mucho en Google al respecto pero no puedo encontrar nada útil.

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

gracias de antemano

Respuesta1

El comando

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

busca todos los archivos normales ( -type f) en el directorio actual ( .) o debajo, y para cada uno de estos archivos se ejecuta grep -H PATH {}y {} se reemplaza por la ruta completa del archivo relativa al directorio actual.

La -Hopción grepno es estándar, pero se implementa a menudo y garantiza que cada línea coincidente tenga como prefijo el nombre de ruta del archivo en el que se encontró la línea. Puede cambiar el comando a grep PATH /dev/null {}forzar grepque siempre se muestre el nombre de ruta del archivo. que contiene las líneas coincidentes (el estándar grephace esto cuando se proporcionan al menos dos archivos en la línea de comando).

El patrón utilizado grepes la cuerda PATH.

Para resumir: el comando busca y genera todas las líneas de todos los archivos normales en el directorio actual o debajo, que mencionan la subcadena PATHen cualquier lugar. Cada línea tiene como prefijo la ruta del archivo que contiene la línea.

Un fragmento del resultado que obtengo cuando ejecuto esto en mi directorio personal:

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

El comando podría hacerse más eficiente permitiendo que grepse ejecute en tantos archivos como sea posible a la vez, en lotes, en lugar de una vez para cada archivo:

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

También me tomé la libertad de cambiar grepligeramente el comando aquí agregando -Fpara que trate la cadena PATHcomo uncadenaen lugar de como una expresión regular. La -eopción solo se usa para indicar que el siguiente argumento es el patrón (útil si el patrón se cambia posteriormente a algo que pueda comenzar con un guión, por ejemplo).

Es el cambio de \;a +al final del -execargumento del predicado lo que hace que recopile los nombres de ruta encontrados en lotes en lugar de ejecutar la utilidad para todos y cada uno de ellos.

información relacionada