wikia traicion sujeto revelations perdido morir lucy fragmentos estigia curiosidades cruzar creed assassins archivo unix find

traicion - Unix encuentra el directorio con el archivo perdido



sujeto 16 (3)

¿Cómo puedo usar find para identificar aquellos directorios que no contienen un archivo con un nombre específico? Quiero crear un archivo que contenga una lista de todos los directorios que pierden un determinado archivo.


Buscar directorios:

find -type d > DIRS

Buscar directorios con el archivo:

find -type f -name ''SpecificName'' | sed ''s!/[^/]*$!!'' > FILEDIRS

Encuentra la diferencia:

grep DIRS -vf FILEDIRS


Este es un ejemplo para un archivo main.cpp. En el ejemplo, se encuentran todos los directorios que no contienen main.cpp en ellos. Como ve, primero obtengo una lista de todas las carpetas, luego obtengo una lista de las carpetas que tienen main.cpp y luego ejecuto diff para obtener una diferencia entre las dos listas:

diff / <(find . -exec readlink -f {} /; | sed ''s//(.*/)//.*$//1/'' | sort | uniq) / <(find . -name main.cpp -exec readlink -f {} /; | sed ''s//(.*/)//.*$//1/'' | sort | uniq) / | sed -n ''s/< /(.*/)//1/p''


Hay varias formas diferentes de abordar esto: este es el enfoque que tomaría (supuso bash ):

while read d do [[ -r ${d}/SpecificFile.txt ]] || echo ${d} done < <(find . -type d -print)

Si sus directorios de destino solo existen a cierta profundidad, existen otras opciones que puede agregar para find para limitar el número de directorios que se verificarán ...