web-dev-qa-db-fra.com

Liste de tous les dossiers et sous-dossiers

Sous Linux, je veux trouver tous les noms de dossier/sous-dossier et rediriger vers un fichier texte

J'ai essayé ls -alR > list.txt, mais il donne tous les fichiers + dossiers

9
Sandeep540

Vous pouvez utiliser find

find . -type d > output.txt

ou tree

tree -d > output.txt

tree, s'il n'est pas installé sur votre système.

Si vous utilisez ubuntu

Sudo apt-get install tree

Si vous utilisez mac os.

brew install tree
37
Adem Öztaş
find . -type d > list.txt

Répertorie tous les répertoires et sous-répertoires sous le chemin actuel. Si vous souhaitez répertorier tous les répertoires sous un chemin d'accès autre que le chemin actuel, modifiez le . vers cet autre chemin.

Si vous souhaitez exclure certains répertoires, vous pouvez les filtrer avec une condition négative:

find . -type d ! -name "~snapshot" > list.txt
6
Amber

En plus de find listés dans d'autres réponses, de meilleurs shells permettent à la fois des globs récurrents et le filtrage des correspondances globales, donc dans zsh par exemple ...

ls -lad **/*(/)

... répertorie tous les répertoires tout en conservant tous les détails "-l" que vous souhaitez, que vous auriez autrement dû recréer en utilisant quelque chose comme ...

find . -type d -exec ls -ld {} \;

(pas aussi facile que les autres réponses le suggèrent)

L'avantage de find est qu'il est plus indépendant du shell - plus portable, même pour les appels system() à partir d'un programme C/C++, etc.

2
Tony Delroy