Existe-t-il une commande Linux que je peux appeler à partir d'un script Bash qui imprimera la structure du répertoire sous la forme d'une arborescence, par exemple,
folder1
a.txt
b.txt
folder2
folder3
linux
command-line
user243655
la source
la source
find
. Oufind . -not -path '*/\.*'
pour masquer les fichiers et dossiers commençant par.
. Si vous voulez avoir une sortie avec des espaces, comme dans la question, utilisez-la avec ce script "find prettifier":find . -not -path '*/\.*' | python -c "import sys as s;s.a=[];[setattr(s,'a',list(filter(lambda p: c.startswith(p+'/'),s.a)))or (s.stdout.write(' '*len(s.a)+c[len(s.a[-1])+1 if s.a else 0:])or True) and s.a.append(c[:-1]) for c in s.stdin]"
Réponses:
Est-ce ce que vous cherchez un arbre ? Il devrait figurer dans la plupart des distributions (peut-être en tant qu'installation facultative).
échantillon extrait de la page Web du responsable.
Vous pouvez ajouter l'option
-L #
où#
est remplacé par un nombre, pour spécifier la profondeur de récursivité maximale.Supprimer
-d
pour afficher également les fichiers.la source
-d
pour afficher également les fichiers!brew install tree
apt-cyg install tree
(en supposant que vous avez installé apt-cyg)apt-get install tree
l'installera.Vous pouvez utiliser celui-ci:
Il montrera une représentation graphique des sous-répertoires actuels sans fichiers en quelques secondes , par exemple dans /var/cache/:
La source
la source
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\// /g' -e 's/^/ /'
.git
?find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
Pour ajouter la solution de Hassou à votre .bashrc, essayez:
la source
alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"''
Cette commande fonctionne pour afficher les dossiers et les fichiers .
Exemple de sortie:
Source: Commentaire de @javasheriff ici . Son submergé en tant que commentaire et le poster comme réponse aide les utilisateurs à le repérer facilement.
la source
find . |grep -vE 'pyc|swp|__init' | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
fonctionnait bienJ'améliore la sortie de la réponse de @ Hassou avec:
Cela ressemble beaucoup à la sortie de
tree
maintenant:Vous pouvez également en créer un alias:
BTW,
tree
n'est pas disponible dans certains environnements, comme MinGW. Le suppléant est donc utile.la source
Vous pouvez également utiliser la combinaison des commandes find et awk pour imprimer l'arborescence des répertoires. Pour plus de détails, reportez-vous à " Comment imprimer une structure de répertoires arborescents à plusieurs niveaux à l'aide des commandes combinées linux find et awk "
la source