[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  Top commandes linux #10 : apg, tar.gz, mariadb galera, comm, rpm, vim