GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo limitar la profundidad para la lista de archivos recursivos?

Revisa el -maxdepth bandera de find

find . -maxdepth 1 -type d -exec ls -ld "{}" \;

Aquí usé 1 como profundidad máxima de nivel, -type d significa buscar solo directorios, que luego ls -ld enumera el contenido de, en formato largo.


Usa find opciones de

En realidad, no hay un ejecutivo de /bin/ls necesario;

Buscar tiene una opción que hace precisamente eso:

find . -maxdepth 2 -type d -ls

Para ver solo el nivel de subdirectorios que le interesa, agregue -mindepth al mismo nivel que -maxdepth :

find . -mindepth 2 -maxdepth 2 -type d -ls

Usar formato de salida

Cuando los detalles que se muestran deben ser diferentes, -printf puede mostrar cualquier detalle sobre un archivo en formato personalizado; para mostrar los permisos simbólicos y el nombre del propietario del archivo, use -printf con %M y %u en el format .

Me di cuenta más tarde que desea la información completa de propiedad, que incluye el grupo. Utilice %g en el formato del nombre simbólico, o %G para la identificación del grupo (como también %U para ID de usuario numérico)

find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'

Esto debería brindarle solo los detalles que necesita, solo para los archivos correctos.

Daré un ejemplo que muestra valores realmente diferentes para el usuario y el grupo:

$ sudo find /tmp -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
drwx------ www-data  www-data /tmp/user/33
drwx------ octopussy root     /tmp/user/126
drwx------ root      root     /tmp/user/0
drwx------ siegel    root     /tmp/user/1000
drwxrwxrwt root      root     /tmp/systemd-[...].service-HRUQmm/tmp

(Editado para mejorar la legibilidad:sangría, última línea acortada)


Notas sobre el rendimiento

Aunque el tiempo de ejecución es mayormente irrelevante para este tipo de comando, el aumento en el rendimiento es lo suficientemente grande como para que valga la pena señalarlo:

No solo nos ahorramos la creación de un nuevo proceso para cada nombre:un enorme tarea -la información ni siquiera necesita ser leída, ya que find ya lo sabe.


tree -L 2 -u -g -p -d

Imprime el árbol de directorios en un bonito formato hasta la profundidad 2 (-L 2). Imprime usuario (-u) y grupo (-g) y permisos (-p). Imprime solo directorios (-d). El árbol tiene muchos otras opciones útiles.


Linux
  1. ¿Cómo encontrar corchetes no coincidentes en un archivo de texto?

  2. ¿Cómo enumerar los tamaños de archivos recursivos de archivos y directorios en un directorio?

  3. ¿Cómo limitar el tamaño del archivo en la confirmación?

  4. ¿Cómo encontrar el administrador de archivos predeterminado?

  5. ¿Cómo enumero archivos con rutas completas en Linux?

Permisos de Linux:cómo encontrar los permisos de un archivo

Cómo limitar la profundidad de la lista recursiva de archivos en Linux

Cómo cambiar el límite de archivos abiertos en Linux

Cómo encontrar archivos basados ​​en la marca de tiempo en Linux

Cómo limitar la profundidad del 'árbol' para el listado de archivos recursivos

Cómo encontrar las líneas más largas en un archivo en Linux