Necesito generar una lista de archivos a partir de un volumen de disco. Algunos de los directorios (todos los directorios ocultos bajo el directorio raíz) tienen permisos extraños que hacen que find se queje.
Trato de excluir todas estas rutas, pero un directorio todavía se queja:
find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied
Los derechos son así (establecidos así por el sistema operativo, por lo que asumo que no deberían alterarse).
d--x--x--x root wheel .DocumentRevisions-V100
¿Cómo cambio el find
declaración para omitir efectivamente todos los directorios ocultos para no quejarse. (No quiero hacer 2>/dev/null
como quiero saber sobre otros problemas).
Respuesta aceptada:
Con GNU find o cualquier otro find que admita -readable
y -executable
predicados:
find . -type d ! ( -readable -executable ) -prune -o -type f -not -path './.*/*' -print
Primero eliminamos los directorios que no son transitables. Si esa condición no se aplica, intente con la(s) otra(s) condición(es).
Si tu find
no tiene estas opciones, puede compararlas con los permisos del archivo.
find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print