[Bash] : un arbre sans tree avec ls et sed

Print Friendly, PDF & Email

Tree est un bon outil pour pouvoir lister les directories et avoir une bonne vision d’ensemble grâce à la mise en forme d’arbre. Mais tree n’est pas installé sur toutes les machines et on ne peut pas toujours le faire ou on ne veut pas s’amuser à le faire (sur des noeuds distants…). Bref on préfère se passer de tree parfois.

Vous vous doutez bien que l’on peut le faire à coup de ls -R. Mais il faut encore le remettre en forme. Alors si on vous le propose en oneline vos prenez ? moi oui.

Voici donc la ligne de commande correspondante :

ls -R | grep ":$" |
sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'

Donc :

  • un ls option récursive
  • ensuite un grep pour ne récupérer que les lignes se terminant par “:”
  • puis un sed pour faire du nettoyage et de la mise en forme (faire les branches de l’arbre)
abstract alone art black

Photo by Raine Nectar on Pexels.com

Découvrez  [Docker] : Swarm - lister les services et les nodes en 1 ligne