Strona 1 z 1
[+] Bash - skrypt, który znajduje katalog wypisuje jego zawartość i objętość
: 20 grudnia 2011, 14:59
autor: Vatos
Witam
.
Mam prośbę
, czy mógłby mi ktoś pomóc napisa
ć skrypt, który prosi użytkownika o podanie nazwy katalogu. Gdy użytkownik wpisze nazwę, program znajduje ten katalog i wypisuje wszystkie katalogi oraz pliki, które się w nim znajdują, a następnie wypisuje
ile zajmuje przestrzeni dyskowej. Do tej pory
napisałem co
ś takiego (jestem początkującym) ale nie wiem jak zrobić by
ścieżka dostępu zmieniała się, gdyż tak jak jest teraz wypisuje zawsze katalogi pliki i
zajmowane miejsce na dysku (objętość) jednego katalogu (podanego w ścieżce)
.
Z góry dziękuję za pomoc.
Kod: Zaznacz cały
#!/bin/bash
echo "wpisz nazwe folderu"
read a
echo 'lokalizacja: '
find -name $a -type d
echo 'foldery:'
cd ./koksy/vatos ls -d
echo 'pliki:'
ls -f
echo 'waga:' du
: 21 grudnia 2011, 13:41
autor: bernat
Dość nieprecyzyjnie postawiłeś wymagania, ale jeśli dobrze zrozumiałem to ma znajdować katalog o podanej nazwie i wypisywać wszystkie podkatalogi wraz z ich objętościami, a potem wypisywać
pliki już bez objętości. Jeśli tak, to napisałem coś w ten deseń.
Kod: Zaznacz cały
#!/bin/bash
echo "wpisz nazwe folderu"
read a
echo 'lokalizacja: '
b=`find -name $a -type d`
echo $b
echo 'foldery:'
find $b -type d -exec du -s {} \;
echo 'pliki:'
find $b -type f
: 02 stycznia 2012, 20:42
autor: Vatos
Dziękuję, teraz już sobie poradzę
. Źle zrozumiałeś trochę, ponieważ wypisać ma tylko
objętość tego głównego katalogu, który poda użytkownik.
Bardzo dziękuję
.
Dodane:
Witam.
Mam jeszcze jeden problem, ale nie mogę go wyeliminować. Mianowicie, gdy wpisuję ciąg znaków obojętnie jaki (takiej nazwy katalogu nie ma) i tak skrypt wypisuje mi pliki z ostatniego katalogu na dysku oraz wypisuje wszystkie katalogi jakie znajdują się na dysku. Tutaj skrypt:
Kod: Zaznacz cały
#!/bin/bashecho "wpisz nazwe folderu"
echo ' '
read a
echo ' '
echo 'lokalizacja: '
echo ' '
b=`find -name $a -type d`
echo $b
echo ' '
echo 'foldery:'
echo ' '
find $b -type d -exec du -sh {} \;
echo ' '
echo 'Data modyfikacji i nazwa:'
cd $b
ls -l | awk '{ FS = " " ; printf(" %s %s %s\n", $6,$7,$8); }'
echo ' '
Próbowałem jeżeli:
czy też podobne rzeczy, ale nie daję rady nawet nie mam pomysłu za bardzo.
: 02 stycznia 2012, 21:20
autor: DaVidoSS
Wystarczy prosta instrukcja warunkowa.
Kod: Zaznacz cały
#!/bin/bash
echo -n "wpisz nazwe folderu: "
read a
if [ -d $a ];then
echo ''
b=`find -name $a -type d`
echo "lokalizacja: $b"
echo ''
echo 'foldery:'
echo ''
find $b -type d -exec du -sh {} \;
echo ''
echo 'Data modyfikacji i nazwa:'
cd $b
ls -l | awk '{ FS = " " ; printf(" %s %s %s\n", $6,$7,$8); }'
echo ''
else
echo "Nie ma katalogu $a"
fi
: 02 stycznia 2012, 21:25
autor: Vatos
Niestety nie działa ale dziękuje za chęci.
Kod: Zaznacz cały
#!/bin/bashecho "wpisz nazwe folderu"
echo ' '
read a
if [ -d $a ] ; then
echo ' '
echo 'lokalizacja: '
echo ' '
b=`find -name $a -type d`
echo $b
echo ' '
echo 'foldery:'
echo ' '
find $b -type d -exec du -sh {} \;
echo ' '
echo 'Data modyfikacji i nazwa:'
cd $b
ls -l | awk '{ FS = " " ; printf(" %s %s %s\n", $6,$7,$8); }'
echo ' '
else
echo "Nie ma katalogu $a"
fi
jest coś takiego to żadnego katalogu nie znajduje, piszę we wszystkich, że nie ma.
: 02 stycznia 2012, 21:34
autor: DaVidoSS
Sprawdź teraz bo ten podgląd jest katastrofą. Odśwież stronę
: 02 stycznia 2012, 21:35
autor: Vatos
Już działa, dziękuję za pomoc, trochę się podparłem. Tutaj kod jakby ktoś szukał czegoś podobnego. Bardzo dziękuję.
Kod: Zaznacz cały
#!/bin/bashecho "wpisz nazwe folderu"
echo ' '
read a
echo ' '
echo 'lokalizacja: '
echo ' '
b=`find -name $a -type d`
if [[ ! -a $b ]]; then
echo "$b nie ma takiego katalogu"
echo ' '
else
echo $b
echo ' '
echo 'foldery:'
echo ' '
find $b -type d -exec du -sh {} \;
echo ' '
echo 'Data modyfikacji i nazwa:'
cd $b
ls -l | awk '{ FS = " " ; printf(" %s %s %s\n", $6,$7,$8); }'
echo ' '
fi
Ps. Twój skrypt nie znajduje katalogów, nie wiem dlaczego? Pozdrawiam.
: 02 stycznia 2012, 22:01
autor: DaVidoSS
Spróbuj tego spodoba Ci się..
Kod: Zaznacz cały
#!/bin/bash
a=""
b=""
echo -n "Wpisz nazwe folderu: "
read a
echo ''
b=`find -name $a -type d`
if [[ ! -a $b ]]; then
echo "Nie ma katalogu $a"
echo ''
else
echo "Lokalizacja: $b"
echo ''
echo 'Foldery:'
find $b -type d -exec du -sh {} \;
echo ''
echo 'Data modyfikacji i nazwa:'
ls -la $b | awk '{ FS = " " ; printf(" %s %s %s %s\n", $6,$7,$8,$9); }'
echo ''
fi