¿Está buscando una forma de organizar sus archivos y realizar algunas operaciones en ellos? Hay muchos casos en la programación en los que necesita ordenar algunos datos, como una lista de archivos. Ordenar archivos con Bash sort
y ls
Los comandos te ayudarán a mantener las cosas organizadas.
En este tutorial, aprenderá los fundamentos de la clasificación de archivos y su contenido.
¡Vamos a clasificar!
Requisitos
Este tutorial usa Ubuntu 20.04, pero cualquier distribución de Linux funcionará.
Bash ordenar archivos alfabéticamente
Hay muchas formas de ordenar archivos en Linux, pero vayamos a la forma más común, ordenar los archivos alfabéticamente.
Inicie su terminal y ejecute el ls -l
Comando a continuación para obtener una lista de archivos en un directorio en orden ascendente. El -l
bandera le dice al ls
comando para imprimir la salida devuelta en un formato de lista larga.
ls -l
De forma predeterminada, el
ls
El comando enumera los archivos en orden ascendente. Para invertir el orden de clasificación, pase el-r
bandera alls -l
comando, así:ls -lr
. Pasando el-r
bandera alls -l
El comando se aplica a otros ejemplos en este tutorial.
Uso de Bash Sort para ordenar archivos por tamaño
En lugar de ordenar los archivos alfabéticamente, es posible que desee ordenar los archivos por tamaño de archivo. Ordenar archivos por tamaño es útil cuando se prioriza ver los archivos más pequeños o más grandes en una lista.
Para ordenar los archivos por tamaño, pase el -S
bandera para decirle al ls
comando para ordenar la lista de archivos por tamaño de archivo.
Ejecute el siguiente comando para listar archivos (ls
) ordenados por tamaño de archivo en un formato de lista larga (-lS
).
ls -lS
A continuación, puede ver que el comando ordenó los archivos por tamaño en orden descendente (de mayor a menor tamaño).
Para invertir el orden de clasificación (de menor a mayor), agregue el
-r
bandera, así:ls -lSr
Ordenar archivos por tiempo de modificación a través de Bash Sort
Avanzando desde la clasificación de archivos por tamaño, es posible que encuentre un caso de uso en el que necesite clasificar los archivos por el momento en que se modificaron. Por ejemplo, olvidó el nombre del archivo que creó y solo recuerda la última vez que modificó el archivo.
Ejecute el siguiente comando donde -t
parámetro le dice al ls
comando para ordenar los archivos por hora de modificación.
ls -lt
Ordenar archivos por extensión de archivo
Cuando busca un archivo con un tipo de archivo en particular, ordenar los archivos por extensión de archivo es la solución ideal.
Ejecute el siguiente comando para listar archivos (ls
) en el directorio de trabajo y ordenar según sus extensiones (-lx
).
ls -lX
Observe a continuación que el comando ordenó los archivos con la misma extensión en orden ascendente según sus nombres.
Ordenar contenidos en un archivo de texto
Hasta ahora, ha aprendido varios métodos para ordenar los archivos en un directorio. Cambiando su enfoque desde el ls
comando, intente ejecutar el sort
dominio. El sort
El comando ordena el contenido del archivo según la bandera que agregará. Pero primero, necesita un archivo con contenidos que modificará.
Ejecute el siguiente comando para crear un archivo de texto llamado ~/data/fruits.txt que contiene nombres de frutas. El -e
habilita la interpretación de la barra invertida para escribir cada palabra en una nueva línea (\n
).
echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt
Ahora ejecute el siguiente comando para sort
cada palabra en fruits.txt
.
sort fruits.txt
A continuación, puede ver que el contenido del archivo está ordenado en orden ascendente.
Sin ninguna bandera, el
sort
ordena el contenido del archivo en orden ascendente de forma predeterminada. Para invertir el orden de clasificación, agregue el-r
marca al comando ordenar, así:sort -r fruits.txt
. Ordenar en orden inverso agregando el-r
flag se aplica a otros ejemplos en este tutorial.
Ordenar una lista de números en un archivo de texto
El comando para ordenar números es similar a ordenar textos en un archivo, pero agregará el -n
bandera en su lugar. Primero creemos un archivo para demostrar cómo ordenar numéricamente el contenido de un archivo.
Ejecute el siguiente comando para crear un archivo llamado ~/data/scores.txt que contiene números aleatorios, cada uno en una nueva línea.
echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt
Ahora ejecute el siguiente comando para sort
los números (-n
) en el ~/data/scores.txt archivo.
sort -n scores.txt
Puede ver a continuación, los números enumerados en líneas, comenzando desde el número más pequeño hasta el más grande.
Ordenar una lista de números de versión en un archivo de texto
Tal vez tenga una lista de números de versión en un archivo de texto que desee ordenar. Si es así, agregue el --version-sort
la opción hará el truco.
Para demostrar cómo --version-sort
la opción funciona, cree un archivo de texto primero.
Ejecute el siguiente comando para crear un archivo de texto llamado ~/data/versions.txt con números de versión aleatorios enumerados, cada uno en una nueva línea (\n
).
echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt
Ahora ejecute el siguiente comando para sort
los números de versión (--version-sort
) en versiones.txt expediente. Los --field-separator
opción le dice al sort
ordene que los números en cada versión estén separados por un punto (.
). Puede cambiar el separador de campo a cualquier carácter que separe los números en las versiones enumeradas en su archivo de texto.
sort --version-sort --field-separator=. versions.txt
Bash Sort para buscar y ordenar archivos a través de la extensión de archivo
Has estado ejecutando comandos individuales (ya sea ls
o sort
) en los ejemplos anteriores. Pero en la programación, a menudo puede necesitar usar dos o más comandos juntos. ¿Cómo? Canalizando un comando a otro.
Ejecute el siguiente comando para find
todos los archivos de rebajas (-iname "*.md"
) en el directorio de trabajo (.
), y ordenarlos en orden alfabético descendente (sort -r
). Intente buscar y ordenar otros archivos cambiando "*.md"
a otra extensión de archivo.
find . -iname "*.md" | sort -r
Si prefiere guardar la salida ordenada en un archivo de texto en lugar de la salida estándar en la consola, agregue el
--output
opción, así:find . -iname "*.md" | sort -r --output=sorted.txt
. El--output
opción le dice alsort
comando para crear un archivo de salida para la lista ordenada de archivos.
Conclusión
El motivo de este artículo fue enseñarle sobre las diferentes formas de ordenar usando los comandos Bash en una máquina Linux. Ahora ha aprendido a ordenar la lista de archivos y ordenar el contenido de los archivos. Además, también debe saber cómo canalizar diferentes comandos para una clasificación de archivos más compleja.
Con este nuevo conocimiento como trampolín, ¿por qué no crear secuencias de comandos para automatizar las listas de archivos y la clasificación del contenido de los archivos?