Parcourir une arborescence et la mettre en forme, ou tree sans tree
Après les pérégrinations autour de awk utilisons le tout pour mettre en forme une arborescence et en afficher les attributs voulus. A base de awk et sed \o/
find /path -type d -exec ls -ld {} \; | awk '{ DIR="" if (NF>9) { for (i=NF;i<=NF;i++) { DIR=DIR" "$i } } else { DIR=$9 } printf("%s [Usr: %s, Grp: %s]\n", DIR, $3, $4)}' | \ sed 's/[^/]*\//| /g;s/| *\([^| ]\)/+--- \1/'
Ce qui nous donne un résultat pour /var/log par exemple :
| +--- log [Usr: root, Grp: root] | | +--- gdm [Usr: root, Grp: gdm] | | +--- sssd [Usr: root, Grp: root] | | +--- glusterfs [Usr: root, Grp: root] | | +--- minidlna [Usr: minidlna, Grp: minidlna] | | +--- libvirt [Usr: root, Grp: root] | | | +--- libxl [Usr: root, Grp: root] | | +--- tomcat [Usr: root, Grp: tomcat] | | +--- sa [Usr: root, Grp: root] | | +--- chrony [Usr: chrony, Grp: chrony] | | +--- redis [Usr: redis, Grp: root] | | +--- upgrade.journal [Usr: root, Grp: root] | | | +--- 133cff700ccf4d6e871cfdcf772fdb4f [Usr: root, Grp: root] | | | +--- 9e3d4b6532ff41e1ab40d6b4e5609907 [Usr: root, Grp: root] | | +--- httpd [Usr: root, Grp: root] | | +--- ceph [Usr: root, Grp: root] | | +--- samba [Usr: root, Grp: root] | | | +--- old [Usr: root, Grp: root] | | | +--- cores [Usr: root, Grp: root] | | | | +--- smbd [Usr: root, Grp: root] | | | | +--- nmbd [Usr: root, Grp: root] | | | | +--- winbindd [Usr: root, Grp: root] | | +--- anaconda [Usr: root, Grp: root] | | +--- audit [Usr: root, Grp: root] | | +--- ppp [Usr: root, Grp: root] | | +--- cups [Usr: lp, Grp: sys] | | +--- mongodb [Usr: mongodb, Grp: root] | | +--- mail [Usr: root, Grp: root] | | +--- prelink [Usr: root, Grp: root]
Si jamais vous êtes en galère de tree, cela peut vous servir :)