¿Cuál es el orden de clasificación predeterminado para las entradas devueltas por el comando linux find?
Por ejemplo, si publico
find . -type f -name '*mp3'
y la salida consta de varios archivos en varias subcarpetas, ¿cuál es el orden predeterminado en el que se enumeran los directorios? Al mismo tiempo, ¿cuál es el orden de clasificación en el que se enumeran los archivos dentro de un directorio individual?
A veces vuelve:
./B/01.mp3
./A/01.mp3
./A/04.mp3
./A/02.mp3
Vea cómo se enumera primero el contenido del directorio B, luego el del directorio A. Al mismo tiempo, dentro del directorio A, los archivos se enumeran en un orden divertido.
-s
parámetro para ordenar alfabéticamente la salida.Respuestas:
find
atravesará el árbol del directorio en el orden en que los elementos se almacenan dentro de las entradas del directorio. Esto (en su mayoría) será coherente de una ejecución a otra, en la misma máquina y esencialmente será un "orden de creación de archivo / directorio" si no ha habido eliminaciones.Sin embargo, algunos sistemas de archivos reordenarán las entradas del directorio como parte de las operaciones de compactación o cuando sea necesario expandir el tamaño de la entrada, por lo que siempre hay una pequeña posibilidad de que el orden "en bruto" cambie con el tiempo. Si desea un orden consistente, alimente la salida a través de una etapa de clasificación adicional.
fuente
find /path/ -exec ...
con una ejecución mucho más rápidafind /path/
para obtener primero una lista ordenada de archivos.No debe confiar en un orden de salida particular
find
y en su lugar debe usarsort
y otros medios para controlar específicamente el orden.fuente
He estado trabajando en UNIX / Linux desde 1984/1991 respectivamente y el primer comando que me enseñaron fue encontrar. Linux / GNU ha puesto casi todo lo que necesita en el comando de búsqueda actual, así que juegue con él.
Aquí hay algunos consejos útiles para ordenar la salida de búsqueda. La opción -printf le ofrece muchas opciones para permitir una clasificación más compleja y una presentación de información de archivo. Es lo mejor para problemas como este. Juega con él para ver qué funcionará para ti. Usando -printf puede personalizar y delimitar los resultados de la manera que desee. Esto ayuda bastante cuando necesita publicar el proceso de los resultados. Espero que esto ayude a alguien.
Si usa -ls y desea ordenar por nombre de archivo, el campo 11 es el nombre del archivo para que pueda hacer lo siguiente. La opción sort -k también puede tomar múltiples campos para ordenar.
encontrar / ruta -ls | ordenar -k11
Si desea un control de grano más fino ordenado por fecha / hora en orden ascendente o descendente, use la opción -printf "". Consulte el manual para obtener más detalles, pero el siguiente es un ejemplo que se imprimirá con segundos fraccionarios, por lo que es muy preciso.
EJEMPLO FECHA / HORA: 2016-09-17 + 12: 09: 57.9013929800
Otra forma de hacerlo sin caracteres en la cadena de fecha / hora es.
EJEMPLO FECHA / HORA: 20160917120013.8101685040
fuente