Respuestas:
No hay nada incorporado para encontrar, incluso GNU find. Puede postprocesar la salida de find
ordenar por número de barras, por ejemplo con Perl:
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<>
es la lista de todas las líneas de entrada;$a =~ s!/!/!g
es el número de barras inclinadas $a
que usamos como criterio de clasificación.Si puedes usar zsh:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/*
enumera todos los archivos en el directorio y subdirectorios actuales.oe
controla el orden en el que se devuelven las coincidencias: se ordenan por el valor de REPLY
después de ejecutar el código aquí entre comillas para cada coincidencia que REPLY
se establece inicialmente en la ruta coincidente.$REPLY
para eliminar todo excepto las barras. Entonces, el resultado consiste en todo en la profundidad 1 (resultado vacío $REPLY
), luego todo en la profundidad 2 ( $REPLY
termina siendo /
), profundidad 3 ( //
), etc.No
Vaya a esta pregunta sobre SO para soluciones alternativas.
Mi sensación es que puedes. Involucra grep y tal y un bucle, pero creo que funciona muy bien, específicamente para su caso sobre el hallazgo que no necesita completarse.
Requiere más recursos debido a:
Esto es bueno porque:
#! / bin / bash profundidad = 0 mientras que encuentra -mindepth $ depth -maxdepth $ depth | grep '.' hacer profundidad = $ ((profundidad + 1)) hecho
También puede ajustarlo en una línea bastante (?) Fácilmente:
depth=0; while find -mindepth $depth -maxdepth $depth | grep --color=never '.'; do depth=$((depth + 1)); done
Pero prefiero pequeños guiones sobre escribir ...