[+] Bash - skrypt, który znajduje katalog wypisuje jego zawarto

Potrzebujesz pomocy z C, C++, perl, python, itp.
Vatos
Posty: 4
Rejestracja: 19 grudnia 2011, 14:52

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

Post 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
bernat
Posty: 4
Rejestracja: 16 grudnia 2011, 19:07

Post 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
Vatos
Posty: 4
Rejestracja: 19 grudnia 2011, 14:52

Post 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.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post 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


Vatos
Posty: 4
Rejestracja: 19 grudnia 2011, 14:52

Post 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.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Sprawdź teraz bo ten podgląd jest katastrofą. Odśwież stronę
Vatos
Posty: 4
Rejestracja: 19 grudnia 2011, 14:52

Post 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.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post 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
ODPOWIEDZ