Nowe posty

Autor Wątek: Proszę o pomoc w przerobieniu skryptu "tree"  (Przeczytany 2070 razy)

modrih

  • Gość
Proszę o pomoc w przerobieniu skryptu "tree"
« dnia: 2011-10-28, 07:05:00 »
Witam!

Mam taki skrypt:

echo
if [ "$1" != "" ]  #if parameter exists, use as base folder
   then cd "$1"
   fi
pwd
ls -R | grep ":$" |   \\
   sed -e 's/:$//' -e 's/[^-][^\\/]*\\//--/g' -e 's/^/   /' -e 's/-/|/'
# 1st sed: remove colons
# 2nd sed: replace higher level folder names with dashes
# 3rd sed: indent graph three spaces
# 4th sed: replace first dash with a vertical bar
if [ `ls -F -1 | grep "/" | wc -l` = 0 ]   # check if no folders
   then echo "   -> no sub-directories"
   fi
echo
exit
W jaki sposób go przerobić aby wyświetlał drzewo plików począwszy od podanego katalogu? Oraz tak abym mógł selekcjonować pliki prze dodatkowe parametry np. nazwa, typ, data, atrybuty?

Generalnie próby z parametrami programu "ls" kończyły się z mojej strony fiaskiem.

Ma ktoś jakiś pomysł?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Proszę o pomoc w przerobieniu skryptu "tree"
« Odpowiedź #1 dnia: 2011-10-28, 12:34:34 »
> W jaki sposób go przerobić aby wyświetlał drzewo plików
> począwszy od podanego katalogu?

Jeśli chcesz pliki, ty wywal grepowanie ":$" w wynikach ls.

> tak abym mógł selekcjonować pliki prze dodatkowe
> parametry np. nazwa, typ, data, atrybuty?

Zamiast ls używać polecenia find.

Jeśli chcesz to zrobić jakoś ładnie graficznie, no to wczytujesz wyniki w skrypcie i obrabiasz - na przykład tym sed-em z kodu powyżej:

while read plik; do
  ...
done < <( find "$1" -type f -name "$2" ... )