Drzewo katalogów w konsoli unixa przy pomocy ls, grep i sed

Pewnego razu potrzebowałem wykonać listę plików w folderze wraz z plikami w jego podfolderach. zwykle polecenie

ls -lr

nie było dobre – zwracało wynik w postaci listy. Ja potrzebowałem czegoś bardziej czytelnego. Po pewnym czasie szukania na Google, natrafiłem na stronkę http://www.centerkey.com/tree/ gdzie zaproponowano taki oto krótkie polecenie:

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

którego rezutaltatem jest np.

/home/dem/apps/firefox
   |-chrome
   |---icons
   |-----default
   |-components
   |-defaults

Po lekkim zmodyfikowaniu polecenia na poniższe:

ls -Rl | grep -E "^-|:$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' \
-e 's/-/|/' -e 's/rw.......[[:space:]]*[0-9][[:space:]]*[a-z]*[[:space:]]*[a-z]*\
[[:space:]]*[0-9]*[[:space:]]*[0-9]*[[:space:]]*[a-z]*[[:space:]]*\
[0-9]*[:0-9]*/--/'

Otrzymać można coś takiego:

|---Zend
|-- Acl.php
|-- Application.php
|-- Auth.php
|-- Cache.php
|-- Config.php
|-- Crypt.php
|-- Currency.php
|-- Date.php

Dodaj komentarz