¿Hay alguna opción de amplitud primero / profundidad primero en la utilidad 'find' de Linux?
12
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.
fuente
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)) hechoTambién puede ajustarlo en una línea bastante (?) Fácilmente:
Pero prefiero pequeños guiones sobre escribir ...
fuente