Utiliser Bash Sort pour Trier les Fichiers Comme un Boss

Êtes-vous à la recherche d’un moyen d’organiser vos fichiers et d’effectuer des opérations sur eux ? Il existe de nombreuses situations en programmation où vous devez trier des données, comme une liste de fichiers. Trier les fichiers avec les commandes Bash sort et ls vous aidera à maintenir l’ordre des choses.

Dans ce tutoriel, vous apprendrez les fondamentaux du tri des fichiers et du contenu des fichiers.

C’est parti pour le tri !

Prérequis

Ce tutoriel utilise Ubuntu 20.04, mais n’importe quelle distribution Linux fera l’affaire.

Trier les fichiers alphabétiquement en Bash

Il existe de nombreuses façons de trier les fichiers sous Linux, mais concentrons-nous sur la manière la plus courante, à savoir trier les fichiers alphabétiquement.

Lancez votre terminal et exécutez la commande ls -l ci-dessous pour obtenir une liste de fichiers dans un répertoire par ordre croissant. Le drapeau -l indique à la commande ls d’afficher la sortie retournée sous forme de liste longue.

ls -l
Bash Sort to Sort Files Alphabetically

Par défaut, la commande ls liste les fichiers par ordre croissant. Pour inverser l’ordre de tri, passez le drapeau -r à la commande ls -l, comme ceci : ls -lr. Passer le drapeau -r à la commande ls -l s’applique aux autres exemples de ce tutoriel.

Utilisation de Bash Sort pour trier les fichiers par taille

Au lieu de trier les fichiers par ordre alphabétique, vous pouvez vouloir trier les fichiers par taille de fichier. Trier les fichiers par taille est pratique lorsque vous souhaitez prioriser l’affichage des fichiers les plus petits ou les plus grands dans une liste.

Pour trier les fichiers par taille, passez le drapeau -S pour indiquer à la commande ls de trier la liste des fichiers par taille de fichier.

Exécutez la commande ci-dessous pour répertorier les fichiers (ls) triés par taille de fichier dans un format de liste longue (-lS).

ls -lS

Vous pouvez voir ci-dessous que la commande a trié les fichiers par taille dans l’ordre décroissant (du plus grand au plus petit).

Pour inverser l’ordre de tri (du plus petit au plus grand), ajoutez le drapeau -r, comme ceci : ls -lSr

Sorting Files by Size

Trier les fichiers par heure de modification via le tri Bash

En passant au tri des fichiers par taille, vous pourriez rencontrer un cas d’utilisation où vous avez besoin de trier les fichiers par l’heure à laquelle ils ont été modifiés. Par exemple, vous avez oublié le nom du fichier que vous avez créé, et vous ne vous souvenez que de l’heure à laquelle vous avez modifié le fichier.

Exécutez la commande ci-dessous où le paramètre -t indique à la commande ls de trier les fichiers par heure de modification.

ls -lt
Sorting Files in a Directory by Modification Time

Trier les fichiers par extension de fichier

Lorsque vous recherchez un fichier avec un type de fichier particulier, trier les fichiers par extension de fichier est la solution idéale.

Exécutez la commande ci-dessous pour répertorier les fichiers (ls) dans le répertoire de travail et les trier en fonction de leurs extensions (-lx).

ls -lX

Remarquez ci-dessous que la commande a trié les fichiers avec la même extension dans l’ordre croissant en fonction de leurs noms.

Sorting Files by File Extension

Trier le contenu dans un fichier texte

Désormais, vous avez appris différentes méthodes pour trier les fichiers dans un répertoire. En déplaçant votre attention de la commande ls, essayez d’exécuter la commande sort. La commande sort trie le contenu du fichier en fonction du drapeau que vous ajouterez. Mais d’abord, vous avez besoin d’un fichier avec du contenu que vous allez modifier.

Exécutez la commande ci-dessous pour créer un fichier texte nommé ~/data/fruits.txt qui contient des noms de fruits. Le drapeau -e permet d’interpréter le caractère d’échappement pour écrire chaque mot sur une nouvelle ligne (\n).

echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt

Exécutez maintenant la commande ci-dessous pour trier chaque mot dans fruits.txt.

sort fruits.txt

Ci-dessous, vous pouvez voir que le contenu du fichier est trié par ordre croissant.

Sorting File’s Content Alphabetically in Ascending Order

Sans aucun drapeau, la commande sort trie le contenu du fichier par ordre croissant par défaut. Pour inverser l’ordre de tri, ajoutez le drapeau -r à la commande de tri, comme ceci : sort -r fruits.txt. Le tri dans l’ordre inverse en ajoutant le drapeau -r s’applique à d’autres exemples de ce tutoriel.

Trier une liste de nombres dans un fichier texte

La commande pour trier les nombres est similaire au tri des textes dans un fichier, mais vous ajouterez le drapeau -n. Créons d’abord un fichier pour illustrer comment trier numériquement le contenu d’un fichier.

Exécutez la commande ci-dessous pour créer un fichier nommé ~/data/scores.txt contenant des nombres aléatoires, chacun sur une nouvelle ligne.

echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt

Exécutez maintenant la commande ci-dessous pour trier les nombres (-n) dans le fichier ~/data/scores.txt.

sort -n scores.txt

Vous pouvez voir ci-dessous les numéros énumérés dans des lignes allant du plus petit au plus grand numéro.

Sorting Numbers in a File

Trier une liste de numéros de version dans un fichier texte

Peut-être avez-vous une liste de numéros de version dans un fichier texte que vous souhaitez trier. Si c’est le cas, l’ajout de l’option --version-sort fera l’affaire.

Pour démontrer comment fonctionne l’option --version-sort, créez d’abord un fichier texte.

Exécutez la commande ci-dessous pour créer un fichier texte nommé ~/data/versions.txt avec des numéros de version aléatoires répertoriés, chacun sur une nouvelle ligne (\n).

echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt

Maintenant, exécutez la commande ci-dessous pour trier les numéros de version (--version-sort) dans le fichier versions.txt. L’option --field-separator indique à la commande sort que les chiffres dans chaque version sont séparés par un point (.). Vous pouvez changer le séparateur de champ par n’importe quel caractère qui sépare les chiffres dans les versions répertoriées dans votre fichier texte.

sort --version-sort --field-separator=. versions.txt
Sorting Version Numbers from a Text File

Trier Bash pour Trouver et Trier les Fichiers par Extension de Fichier

Vous avez exécuté des commandes uniques (soit ls soit sort) dans les exemples précédents. Mais en programmation, vous devrez souvent utiliser deux commandes ou plus ensemble. Comment ? En créant un pipeline d’une commande à une autre.

Exécutez la commande ci-dessous pour trouver tous les fichiers markdown (-iname "*.md") dans le répertoire de travail (.), et triez-les par ordre alphabétique décroissant (sort -r). Essayez de trouver et de trier d’autres fichiers en changeant "*.md" par une autre extension de fichier.

find . -iname "*.md" | sort -r
Finding and Listing Files in Alphabetically Descending Order

Si vous préférez enregistrer la sortie triée dans un fichier texte plutôt que sur la sortie standard de la console, ajoutez l’option --output, comme ceci : find . -iname "*.md" | sort -r --output=sorted.txt. L’option --output indique à la commande sort de créer un fichier de sortie pour la liste triée des fichiers.

Conclusion

L’objectif de cet article était de vous enseigner différentes façons de trier en utilisant des commandes Bash sur une machine Linux. Vous avez maintenant appris à trier la liste des fichiers et à trier le contenu des fichiers. De plus, vous devriez également savoir comment chaîner différentes commandes pour un tri de fichiers plus complexe.

Avec cette nouvelle connaissance comme point de départ, pourquoi ne pas créer des scripts pour automatiser les listes de fichiers et le tri du contenu des fichiers ?

Source:
https://adamtheautomator.com/bash-sort/