Respuestas:
No hay nada incorporado para encontrar, incluso GNU find. Puede postprocesar la salida de findordenar 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!/!/!ges el número de barras inclinadas $aque usamos como criterio de clasificación.Si puedes usar zsh:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/* enumera todos los archivos en el directorio y subdirectorios actuales.oecontrola el orden en el que se devuelven las coincidencias: se ordenan por el valor de REPLYdespués de ejecutar el código aquí entre comillas para cada coincidencia que REPLYse establece inicialmente en la ruta coincidente.$REPLYpara 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 ( $REPLYtermina 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 ...