ďťż
 
 
   [bash] Porównywanie katalogów
 
 

Tematy

 
    
 

 

 

 

[bash] Porównywanie katalogów





Kernel1 - 07-11-2007 18:20
Treść programu:
Porównanie zawartości dwóch zadanych katalogów (argumenty skryptu). Przy porównaniu należy ignorować podkatalogi. W wyniku wyświetlić na ekranie listę plików identycznych w obu katalogach.

Program w chwili obecnej jest tak napisany:

W katalogu 1 mam 2 pliki o nazwie 'plik' oraz 'plik1' w 2 katalogu mam pliki o nazwie 'plik' i 'plik3'.

vi skrypt.sh

#!/bin/bash
[ -d $1 -a -d $2 ] || { echo 'podaj w argumentach 2 katalogi' >&2; exit; }
ls $1 /root/katalog1/
ls $2 /root/katalog2/
diff /root/katalog1/ /root/katalog2/ Po wpisaniu polecenia "bash skrypt.sh"
Wyswietla mi liste katalogów w 1 i 2 katalogu, oraz listę plików innych w katalogu /root/katalog1 oraz /root/katalog2

Chce aby skrypt mozna bylo uruchamiac z "argumentem skryptu" czyli nie wiecej chodzi mi o cos takiego po wpisaniu 'bash skrypt.sh katalog1' i wyswietla liste plikow w katalogu 1 oraz 2.

Druga rzecz to nie wiem jak zrobic w 5 linii opcje diff z parametrem (-x) aby ignorował podkatalogi, bo o to chodzi w zadaniu.

No i trzy, żeby wyswietlał na ekranie listę plików identycznych w obu katalogach, czyli w moim przypadku plik o nazwie 'plik' ktory znajduje sie w obu katalogach.

Proszę o pomoc w dokończeniu programu.

Pozdrawiam i z góry dziękuje.

//edit
uzywaj tagów code
mlyczek




- 07-11-2007 20:00
Może takie coś na początek (?) :
#!/bin/bash

if [ $# -ne 2 ]; then
    printf "\n Jako argumenty musisz podać 2 różne katalogi\n Podałeś $#.\n"
    exit 1
fi

lista=$(diff -s "$1" "$2" | grep ident | sed 's/.*\///;s/\ .*//')

if [ -z "$lista" ]; then
        printf "\n Brak identycznych plików w podanych katalogach\n"
else
        printf "\n--- Pliki identyczne ---\n"
        printf "\n$lista\n"
        printf "\n------- Koniec -------\n"
fi

exit $? Tylko weź pod uwagę, że to porównuje pliki, a nie tylko ich nazwy.
Mam nadzieję, że o to chodziło.

Pozdrawiam



Kernel1 - 07-11-2007 22:15
Hagal, tak może porównywać także pliki ,,od środka'', a nie tylko ich nazwy.

P.S. Program uruchamia się poleceniem: bash skrypt.sh i całość działa?
Bo nie mam obecnie teraz w akademiku możliwości sprawdzenia tego programu, bo nie jestem na swoim komputerze, dopiero będę mógł to uczynić w piątek.

Dziękuje Hagal za włożony wysiłek i pomoc dla mnie.
Poza tym macie wiele ciekawych rzeczy na forum Debiana, z chęcią będę przeglądał je.

Pozdrawiam.



- 07-11-2007 22:43

Program uruchamia się poleceniem 'bash skrypt.sh' i całość działa? Wystarczy samo:
/ścieżka/do/skrypt.sh Wymóg użycia basha jest wpisany w pierwszej linii.

Przy czym, samo: /ścieżka/do/skrypt.sh lub podanie innej liczby argumentów niż 2 da Ci w wyniku:
Jako argumenty musisz podać 2 różne katalogi
 Podałeś 0. Żeby porównać należy wpisać:
/ścieżka/do/skrypt.sh /ścieżka_do/1_katalog /ścieżka_do/2_katalog Sam przecież prosiłeś o:
Pozdrawiam.



Kernel1 - 07-11-2007 22:46
No faktycznie sam o tym wspomniałem ;) To przez te zajęcia do wieczora i ciągły stres.

Dziękuje za pomoc.
Miłej nocy.

Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis