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
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
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
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.