GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de Bash Sort pour trier les fichiers comme un patron

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 au ls -l commande, comme ceci :ls -lr . Passer le -r drapeau au ls -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 le sort 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 ?


Linux
  1. Trouver les plus gros fichiers ou répertoires ?

  2. Comment trier les fichiers selon leurs autorisations à l'aide de Ls ?

  3. Script Bash pour trier les fichiers dans des dossiers alphabétiques sur Readynas Duo V1 ?

  4. Comment trier des fichiers sous Linux à l'aide de la commande Sort

  5. Tableau dans Bash introuvable

Comment lire des fichiers ligne par ligne dans Bash

Transférer des fichiers à l'aide de WinSCP

Utiliser rsync pour synchroniser les fichiers

Trier en bash

Comment trier les fichiers dans des dossiers par type de fichier sur bash (avec la commande 'file') ?

utiliser random pour générer une chaîne aléatoire dans bash