GNU/Linux >> Tutoriels Linux >  >> Linux

Comment répertorier récursivement tous les répertoires d'un emplacement, en largeur d'abord ?

Si vous souhaitez le faire à l'aide d'outils standard, le pipeline suivant devrait fonctionner :

find . -type d | perl -lne 'print tr:/::, " $_"' | sort -n | cut -d' ' -f2

C'est-à-dire

  1. trouver et imprimer tous les répertoires ici en profondeur premier ordre
  2. comptez le nombre de barres obliques dans chaque répertoire et ajoutez-le au chemin
  3. trier par profondeur (par exemple, nombre de barres obliques)
  4. extraire uniquement le chemin.

Pour limiter la profondeur trouvée, ajoutez l'argument -maxdepth à la commande find.

Si vous souhaitez que les répertoires soient répertoriés dans le même ordre que ceux trouvés, utilisez "sort -n -s" au lieu de "sort -n" ; le drapeau "-s" stabilise le tri (c'est-à-dire qu'il préserve l'ordre d'entrée parmi les éléments qui se comparent de manière égale).


Le find la commande prend en charge -printf option qui reconnaît beaucoup d'espaces réservés.

Un tel espace réservé est %d qui rend la profondeur du chemin donné, par rapport à où find commencé.

Par conséquent, vous pouvez utiliser la simple ligne suivante :

find -type d -printf '%d\t%P\n' | sort -r -nk1 | cut -f2-

C'est assez simple et ne dépend pas d'outils lourds comme perl .

Comment ça marche :

  • il génère en interne une liste de fichiers, chacun rendu sous la forme d'une ligne à deux champs
  • le premier champ contient la profondeur, qui est utilisée pour le tri numérique (inversé), puis découpée
  • le résultat est une simple liste de fichiers, un fichier par ligne, dans l'ordre le plus profond

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

  2. Comment lister récursivement tous les fichiers et répertoires

  3. Comment lister récursivement les répertoires en C sous Linux ?

  4. Comment trouver/lister tous les fichiers uniques dans deux répertoires ?

  5. Comment puis-je supprimer de manière récursive tous les fichiers et répertoires vides sous Linux ?

Comment lister toutes les bases de données dans PostgreSQL

Comment rechercher et répertorier récursivement les fichiers par date sous Linux

Comment trouver toutes les polices installées sous Linux

Comment trouver les répertoires les plus volumineux ou les fichiers les plus volumineux ?

Comment lister les fichiers de manière récursive et les trier par heure de modification ?

Comment lister tous les fichiers d'une partition sous Linux ?