GNU/Linux >> Tutoriales Linux >  >> Linux

Usando Bash Sort para ordenar archivos como un jefe

¿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 al ls -l comando, así:ls -lr . Pasando el -r bandera al ls -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 al sort 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?


Linux
  1. Administre el directorio Linux /tmp como un jefe

  2. ¿Encontrar archivos o directorios más grandes?

  3. ¿Cómo ordenar los archivos por sus permisos usando Ls?

  4. Bash Script para ordenar archivos en carpetas alfabéticas en Readynas Duo V1?

  5. Uso de declaraciones de casos en Bash

Cómo leer archivos línea por línea en Bash

Usando Bash para la automatización

Transferir archivos usando WinSCP

usando random para generar una cadena aleatoria en bash

Usando sftp como scp

Problemas relacionados con el uso de sort y comm