Strona 1 z 1

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

: 08 maja 2012, 06:35
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

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

: 08 maja 2012, 07:02
autor: jacekalex
A po co kopać w otwarte drzwi?

To by było na tyle
:craz:

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

: 08 maja 2012, 07:34
autor: rom
Jest też graficzny Fslint w repozytorium. Dodatkowo pozwala łatwo dodać ścieżki, które mają zostać zignorowane podczas porównywania.

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

: 08 maja 2012, 07:37
autor: eskaemma
Dzięki za odpowiedzi. Właśnie zapuściłem fdupes - do pół godziny i będzie po sprawie.