Jak przerobić poniższy skrypt, aby wyświetlał tak strukturę katalogów:
Kod: Zaznacz cały
rekurencja/
|
|-----subdir01/
| |
| |-----file01
| |-----file02
| |-----file03
|-----subdir02/
|-----subdir03/
Kod: Zaznacz cały
recls ()
{
singletab="\t"
for tryfile in "$@"; do
echo $tryfile
if [ -d "$tryfile" ]; then
thisfile=$tryfile
recdir $(command ls $tryfile)
fi
done
unset singletab tab
echo
}
Kod: Zaznacz cały
recdir ()
{
tab=$tab$singletab
for file in "$@"; do
echo -e $tab$file
thisfile=$thisfile/$file
if [ -d "$thisfile" ]; then
recdir $(command ls $thisfile)
fi
thisfile=${thisfile%/*}
done
tab=${tab%"$singletab"}
}
recls katalog
[ Dodano: 2006-12-29, 10:59 ]
Skrypt wyszedł trochę "koślawy", ale działa.
Kod: Zaznacz cały
draw ()
{
pipeLine=""
link="--------"
declare -i tabNum=$(echo -e $tab | wc -m)
tabNum=$((--tabNum))
for (( i=1; i<=tabNum; i++ ))
do
pipeLine=$pipeLine${singleTab}\|
done
#wypisanie lini zawierającej znaki '|' oraz końcowy łącznik
echo -en $pipeLine$link
}
Kod: Zaznacz cały
recls ()
{
singleTab="\t"
for tryfile in "$@"; do
echo $tryfile
if [ -d "$tryfile" ]; then
thisfile=$tryfile
recdir $(command ls $tryfile)
fi
done
unset singleTab tab pipeLine link tabNum
# pusta linia oddzielająca kolejne drzewa katalogów
echo
}
Kod: Zaznacz cały
recdir ()
{
#dodanie nowego tabulatora
tab=$tab$singleTab
for file in "$@"; do
#rysowanie struktury drzewa
draw
#wypisanie nazwy pliku
echo $file
thisfile=$thisfile/$file
if [ -d "$thisfile" ]; then
recdir $(command ls $thisfile)
fi
thisfile=${thisfile%/*}
done
#plik nie jest katalogiem - usunięcie jednego tabulatora
tab=${tab%"$singleTab"}