Linux - skrypty, pomocy

0

Witajcie!
Jestem w fazie jeszcze początkującej pisania skryptów pod Linuxem i mam do napisania taki skrypcik:

W zadanym drzewie katalogów znajdź pliki regularne o identycznej zawartości.

Zwracam się do ludzi kumających skrypty o pomoc w napisaniu lub o napisane, za co będę bardzo wdzięczny. Dzięki!!!

P.S. Czy ktoś może mi jeszcze wyjaśnić co to są pliki regularne?</b>

0

to po prostu pliki, nie symlinki do plikow.

0

Do sprawdzenia czy pliki się różnią możesz wykorzystać chyba diff. Konkretnie: diff -s plik1 plik2 powinno podać od razu czy pliki są identyczne.

0

Widze że jesteście na takim samym poziomie pisania skryptu co ja :|

0

forum.slackware.pl
Nawprawde mądrzy ludzie tam pisują

0

Na pewno nie jest to optymalne, ale przynajmniej działa :P
Próbowałem to tylko z wykorzystaniem find zrobić (tzn. bez skryptu), ale niestety nie mogę diff wyciszyć :(

#!/bin/sh

for pl1 in `find . -name "*"`
do
    for pl2 in `find . -name "*"`
    do
	if [ -f $pl1 -a -f $pl2 -a ! $pl1 -ef $pl2 ] && diff $pl1 $pl2 > /dev/null
	then
		echo $pl1 $pl2
	fi
    done
done

/* dopisane */
To będzie lepsze. Tylko raz find wywołamy i to od razu find sprawdzi, czy to jest plik regularny

#!/bin/sh
# usage: skrypt.sh sciezka_do_katalogu

# odczytujemy wszystkie pliki z katalogu podanego na wejsciu
# wyszukujemy tylko pliki regularne (-type f)
pliki=`find $1 -type f`
# podwojna petelka, czyli przelecimy kazda pare i jeżeli to są identyczne pliki, ale nie te same, to wypisemy
for pl1 in $pliki 
do
    for pl2 in $pliki
    do
	# sprawdzamy, czy to nie jest ten sam plik i czy pliki sa identyczne
	if [ ! $pl1 -ef $pl2 ] && diff $pl1 $pl2 > /dev/null
	then
		echo $pl1 $pl2
	fi
    done
done

1 użytkowników online, w tym zalogowanych: 0, gości: 1