Strona 1 z 1

[+] Bash - skrypt, który znajduje katalog wypisuje jego zawartość i objętość

: 20 grudnia 2011, 14:59
autor: Vatos
Witam.
M
am 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:

Kod: Zaznacz cały

$b = 0
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