[SOLVED]Kasowanie nadmiarowych/identycznych plików (bardzo wolne działanie programu)

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
eskaemma
Sędziwy Jeż
Sędziwy Jeż
Posty: 36
Rejestracja: 20 kwie 2009, 14:59
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: Xfce
Architektura: x86_64

[SOLVED]Kasowanie nadmiarowych/identycznych plików (bardzo wolne działanie programu)

Post autor: eskaemma »

Skrypt kasuje powtarzające się pliki, przy czym jeden z nich pozostawia. Pliki muszą być porównywane po ich zawartości ponieważ zdaża się, że mają te same nazwy i inną zawartość. Czas potrzebny na wykonanie skryptu dla 10 000 plików oszacowałem na około 3 doby, więc potwornie długo. Pytanie: Co zmienić?, jak ewentualnie zrobić to inaczej? Może fragmenty plików najpierw wrzucić do jakiejś bazy i na bazie wybrać pliki do usunięcia? Poproszę o jakieś sugestie.

Kod: Zaznacz cały

#!/bin/bash

cd /home/qwlxatyn/.!plytki
files=`find .`
ktory_plik=0
zdjecie=(element0 element1)
for f in $files
do
    if [  -f $f ]
    then
	if echo "$f" | egrep -i '.jpg|.gif' >/dev/null
	then
	    ktory_plik=$(( $ktory_plik + 1 ))
	    zdjecie[$ktory_plik]=$f
	fi
    fi
done

z=0
for i in `seq 1 $ktory_plik`
do
    echo $i
    ii=$(( $i + 1 ))
    for j in `seq $ii $ktory_plik`
    do
	if test -f ${zdjecie[i]}
	then
	    if test -f ${zdjecie[j]}
	    then
		if cmp --bytes=1024 ${zdjecie[i]} ${zdjecie[j]} >/dev/null
		then
		    rm -f ${zdjecie[j]}
		    z=$(( $z + 1 ))
		fi
	    fi
	fi
    done
done

echo $z
Ostatnio zmieniony 08 maja 2012, 07:36 przez eskaemma, łącznie zmieniany 1 raz.
Rule: 1002 (level 2) -> 'Unknown problem somewhere in the system.'
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: Kasowanie nadmiarowych/identycznych plików (bardzo wolne działanie programu)

Post autor: jacekalex »

A po co kopać w otwarte drzwi?

To by było na tyle
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
Awatar użytkownika
rom
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1309
Rejestracja: 30 cze 2009, 14:58
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Xfce
Architektura: x86

Re: Kasowanie nadmiarowych/identycznych plików (bardzo wolne działanie programu)

Post autor: rom »

Jest też graficzny Fslint w repozytorium. Dodatkowo pozwala łatwo dodać ścieżki, które mają zostać zignorowane podczas porównywania.
także = też
tak że = więc
eskaemma
Sędziwy Jeż
Sędziwy Jeż
Posty: 36
Rejestracja: 20 kwie 2009, 14:59
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: Xfce
Architektura: x86_64

Re: [SOLVED]Kasowanie nadmiarowych/identycznych plików (bardzo wolne działanie programu)

Post autor: eskaemma »

Dzięki za odpowiedzi. Właśnie zapuściłem fdupes - do pół godziny i będzie po sprawie.
Rule: 1002 (level 2) -> 'Unknown problem somewhere in the system.'
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości