Necesito crear una lista de archivos presentes en un directorio pero también pasar un archivo que contenga una lista de directorios para excluir.
He visto la siguiente sugerencia pero no he tenido suerte con ella cuando se trata del indicador de tipo:
find $dir_name $(printf "! -name %s " $(cat $exclude_file))
¿Hay alguna manera de hacerlo o tendré que crear la lista completa y luego trabajar en ella eliminando las que coincidan parcialmente con las del directorio de exclusión?
Respuesta1
Dado que exclude_file
contiene rutas, no nombres, debe usar -path
para hacer coincidir sus entradas. Para excluir los subdirectorios de directorios coincidentes, también los necesita -prune
. Esto debería funcionar:
find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print
Si solo desea ver archivos, puede imprimir solo archivos:
find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print