Estoy tratando de encontrar el directorio de instalación de un paquete en particular. Tengo una determinada palabra clave con la que estoy tratando de encontrar un archivo en particular.
Durante grep, solo quiero incluir el tipo de archivo cpp o h . No quiero que grep muestre advertencias como Permiso denegado o No se pudo encontrar el Directorio . Solo quiero que muestre archivos coincidentes, nada más. Por favor sugiera cómo puedo hacer esto?
Actualmente estoy usando
grep "My term" -ir --exclude-dir="\.svn" --include=*.{cpp,h} ./
find . 2>/dev/null | grep 404.html
es cómo se vería un comandoMás directamente que filtrar las advertencias, puede deshabilitarlas agregando
-s
:Hay algunos problemas de compatibilidad con esta opción. Sin embargo, esto no debería ser un problema para uso personal.
fuente
Solía recibir un montón de mensajes molestos como este:
La razón es que la
--directories
bandera está predeterminadaread
. Lo cambié arecurse
; si no desea que realice automáticamente una búsqueda recursiva, puede usarlaskip
en su lugar.La forma más fácil de manejar esto todo el tiempo es establecerlo en una variable de entorno. En
~/.bash_profile
o~/.bashrc
según su distribución:Ahora suprime automáticamente esos mensajes cada vez que uso grep.
Otra opción es la
--no-messages
bandera, taquigrafía-s
. Esto también eliminará losIs a directory
mensajes, pero también suprime otros mensajes que podrían ser más útiles. Por ejemplo, si está haciendo una búsqueda anidada*/*/*
y no existe tal archivo de ese patrón, no se lo dirá.fuente
Un enfoque alternativo en lugar de hacerlo
grep
recursivamente-ir
sería dejar que elfind
comando (que es recursivo por defecto) maneje los permisos con-readable
bandera y rutas para excluir con-not -path "*.svn*"
banderas, y luego pasar el archivo agrep
. La exclusión de directorios se realiza-type f
para encontrar solo archivos normales.fuente
Al realizar búsquedas recursivas en archivos específicos, es mucho mejor usarlo
ack-grep
. La sintaxis aquí sería:Para eliminar los mensajes de error de permiso, es posible que desee ejecutar el mismo comando con
sudo
:Pero eventualmente, si desea buscar paquetes instalados, mire esas diversas opciones: https://www.google.com/search?q=ubuntu%20search%20inside%20installed%20packages
fuente