
Ejemplo. Tengo una palabra que estoy buscando, di"gato". Y sé que la palabra se puede ubicar en cualquier lugar del directorio de trabajo actual. Así que usogrep-r, y esto da los resultados de la siguiente forma:
./example_root/[dir1|dir2]/[SOME_ARBITRARY_SUBPATH]/cat_file,
dónde
archivo_gato
es el archivo que contiene la palabra"gato". ¿Qué pasa si sólo estoy interesado en
/raíz_ejemplo/dir1/[cualquiera_ruta]
prefijo para mi camino? ¿Cómo se lo digo?grep?
Respuesta1
lo intentaré
grep -rl cat directory | xargs dirname
dónde
grep -rl cat directory
busque recursivamente (-r
) cat en el directorio y (-l
) archivos lisy.| xargs dirname
cada archivo se "entrega" adirname
, lo que elimina parte del archivo.
Respuesta2
La respuesta de @Kusalananda en los comentarios es lo que quería: simplemente hazlo.
grep -r 'cat' /example_root/dir1/
Sin embargo, en caso de que desee recuperar los nombres de los directorios donde residen las palabras, lo siguiente (créditos a @Archemar) es útil.
grep -rl cat directory | xargs dirname