Digamos que tengo el siguiente archivo
this/is/my/file.txt
¿Puedo buscar este archivo dado que sólo sé que el archivo está en /my/
directorio ?
Digamos que tengo el siguiente archivo
this/is/my/file.txt
¿Puedo buscar este archivo dado que sólo sé que el archivo está en /my/
directorio ?
find
un archivo en el directorio más interno?Puede utilizar find
para buscar un archivo específico ( file.txt
), y se hará una búsqueda por usted (según las opciones especificadas). Pero ¿qué pasa si tienes dos file.txt
s, y sólo quieren coincidir con un ¿para usarla en un script? Introduzca awk
, sort
, head
y cut
:
find /my/ -type f -name file.txt | awk -F/ '{ print NF-1, $0 }' | sort -nr | head -n1 | cut -d " " -f2
Esto devolverá un resultado: el más profundo coincidencia - o ninguna.
find
en /my/
todos los archivos regulares ( -type f
) -name
d file.txt
pasar a awk
y hacer que cuente el número de directorios (profundidad) estableciendo el separador de campos como /
( -F/
), y anteponiendo eso al resultado ( print NF-1, $0
)
sort
que numéricamente, descendiendo desde el mayor (es decir, la mayoría de los directorios) primero
sólo tienen un resultado ( head -n1
)
quitar el recuento de la profundidad ( cut -d " " -f2
)
Puede haber una forma más corta de hacerlo, pero esto devolverá el resultado más profundo. Supone que las barras inclinadas /
para la demarcación del directorio, pero creo que podemos permitirlo. Probado en GNU bash, version 4.3.30(1)-release
(y GNU bash, version 3.2.53(1)-release
en OSX), y no depende demasiado de los GNUismos.
EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.