Cherchez-vous un moyen d'organiser vos fichiers et d'effectuer certaines opérations dessus ? Il existe de nombreux cas dans la programmation où vous devez trier certaines données, comme une liste de fichiers. Trier les fichiers avec le Bash sort
et ls
commandes vous aideront à garder les choses organisées.
Dans ce didacticiel, vous apprendrez les bases du tri des fichiers et du contenu des fichiers.
Allons trier !
Prérequis
Ce tutoriel utilise Ubuntu 20.04, mais n'importe quelle distribution Linux fonctionnera.
Bash Trier les fichiers par ordre alphabétique
Il existe des tonnes de façons de trier les fichiers sous Linux, mais passons à la méthode la plus courante, le tri des fichiers par ordre alphabétique.
Lancez votre terminal et exécutez le ls -l
commande ci-dessous pour obtenir une liste de fichiers dans un répertoire par ordre croissant. Le -l
flag indique le ls
commande pour imprimer la sortie renvoyée dans un format de longue liste.
ls -l
Par défaut, le
ls
La commande répertorie les fichiers dans l'ordre croissant. Pour inverser l'ordre de tri, passez le-r
drapeau auls -l
commande, comme ceci :ls -lr
. Passer le-r
drapeau auls -l
La commande s'applique aux autres exemples de ce didacticiel.
Utiliser Bash Sort pour classer les fichiers par taille
Au lieu de trier les fichiers par ordre alphabétique, vous souhaiterez peut-être trier les fichiers par taille de fichier. Trier les fichiers par taille est pratique pour donner la priorité aux fichiers les plus petits ou les plus volumineux d'une liste.
Pour trier les fichiers par taille, passez le -S
drapeau pour indiquer le ls
commande pour trier la liste des fichiers par taille de fichier.
Exécutez la commande ci-dessous pour lister les fichiers (ls
) triés par taille de fichier dans un format de longue liste (-lS
).
ls -lS
Ci-dessous, vous pouvez voir la commande trier 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
-r
drapeau, comme ceci :ls -lSr
Trier les fichiers par heure de modification via Bash Sort
En partant du tri des fichiers par taille, vous pouvez rencontrer un cas d'utilisation dans lequel vous devez trier les fichiers au moment où 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 pour la dernière fois.
Exécutez la commande ci-dessous où le -t
le paramètre indique le ls
commande pour trier les fichiers par date de modification.
ls -lt
Trier les fichiers par extension de fichier
Lorsque vous recherchez un fichier avec un type de fichier particulier, le tri des fichiers par extension de fichier est la solution idéale.
Exécutez la commande ci-dessous pour lister les fichiers (ls
) dans le répertoire de travail et trier en fonction de leurs extensions (-lx
).
ls -lX
Notez ci-dessous que la commande a trié les fichiers avec la même extension par ordre croissant en fonction de leurs noms.
Trier le contenu d'un fichier texte
À présent, vous avez appris diverses méthodes pour trier les fichiers dans un répertoire. Déplacer votre attention du ls
commande, essayez d'exécuter le sort
commande. Le sort
La commande trie le contenu du fichier en fonction de l'indicateur que vous allez ajouter. Mais d'abord, vous avez besoin d'un fichier dont vous modifierez le contenu.
Exécutez la commande ci-dessous pour créer un fichier texte nommé ~/data/fruits.txt qui contient des noms de fruits. Le -e
flag active l'interprétation de la barre oblique inverse 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 sort
chaque mot en fruits.txt
.
sort fruits.txt
Ci-dessous, vous pouvez voir que le contenu du fichier est trié par ordre croissant.
Sans aucun drapeau, le
sort
commande trie le contenu du fichier par ordre croissant par défaut. Pour inverser l'ordre de tri, ajoutez le-r
drapeau à la commande de tri, comme ceci :sort -r fruits.txt
. Trier dans l'ordre inverse en ajoutant le-r
flag s'applique aux autres exemples de ce didacticiel.
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 -n
drapeau à la place. Commençons par créer un fichier pour montrer comment trier numériquement le contenu d'un fichier.
Exécutez la commande ci-dessous pour créer un fichier nommé ~/data/scores.txt qui contient 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 sort
les chiffres (-n
) dans le ~/data/scores.txt fichier.
sort -n scores.txt
Vous pouvez voir ci-dessous, les nombres listés en lignes commençant du plus petit au plus grand nombre.
Trier une liste de numéros de version dans un fichier texte
Vous avez peut-être une liste de numéros de version dans un fichier texte que vous souhaitez trier. Si oui, ajouter le --version-sort
l'option fera l'affaire.
Pour démontrer comment le --version-sort
l'option fonctionne, 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
Exécutez maintenant la commande ci-dessous pour sort
les numéros de version (--version-sort
) dans le versions.txt dossier. Le --field-separator
l'option indique le sort
commande que les numéros de chaque version sont séparés par un point (.
). Vous pouvez remplacer le séparateur de champ par n'importe quel caractère séparant les numéros des versions répertoriées dans votre fichier texte.
sort --version-sort --field-separator=. versions.txt
Bash Sort pour rechercher et trier des fichiers via l'extension de fichier
Vous avez exécuté des commandes uniques (soit ls
ou sort
) dans les exemples précédents. Mais en programmation, vous devrez souvent utiliser deux commandes ou plus ensemble. Comment? En canalisant une commande vers une autre.
Exécutez la commande ci-dessous pour find
tous les fichiers de démarquage (-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 modifiant "*.md"
à une autre extension de fichier.
find . -iname "*.md" | sort -r
Si vous préférez enregistrer la sortie triée dans un fichier texte au lieu de la sortie standard sur la console, ajoutez le
--output
option, comme ceci :find . -iname "*.md" | sort -r --output=sorted.txt
. Le--output
l'option indique lesort
commande pour créer un fichier de sortie pour la liste triée des fichiers.
Conclusion
Le but de cet article était de vous apprendre les différentes manières de trier à l'aide 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 devez également savoir comment canaliser différentes commandes pour un tri de fichiers plus complexe.
Avec ces nouvelles connaissances comme tremplin, pourquoi ne pas créer des scripts pour automatiser les listes de fichiers et le tri du contenu des fichiers ?