https://xn--n-soa.lt/w//index.php?title=Duplikatu_paieska_ir_perkelimas&feed=atom&action=history
Duplikatu paieska ir perkelimas - Versijų istorija
2024-03-28T21:16:02Z
Šio puslapio versijų istorija projekte
MediaWiki 1.35.1
https://xn--n-soa.lt/w//index.php?title=Duplikatu_paieska_ir_perkelimas&diff=8975&oldid=prev
\dev\null: Naujas puslapis: Failų duplikatų radimas ir perkėlimas pagal jų sha1 file checksum. = Naudojimas = ./find_dups /Volumes/Data/A /Volumes/Data/A/original /Volumes/Data/A/duplicates * /Volume...
2019-10-22T07:29:24Z
<p>Naujas puslapis: Failų duplikatų radimas ir perkėlimas pagal jų sha1 file checksum. = Naudojimas = ./find_dups /Volumes/Data/A /Volumes/Data/A/original /Volumes/Data/A/duplicates * /Volume...</p>
<p><b>Naujas puslapis</b></p><div>Failų duplikatų radimas ir perkėlimas pagal jų sha1 file checksum.<br />
<br />
= Naudojimas =<br />
<br />
./find_dups /Volumes/Data/A /Volumes/Data/A/original /Volumes/Data/A/duplicates<br />
* /Volumes/Data/A Pirmas parametras nurodo kur yra visi failai<br />
* /Volumes/Data/A/original Antras parametras kurios direktorijos neliesti viduje (pirmam parametre nurodytoje direktorijoje)<br />
* /Volumes/Data/A/duplicates Trečias parametras nurodo kur sudėti duplikatus (jeigu pavadinimai vienodi, bus surašyti ant viršaus)<br />
<br />
= Script =<br />
<br />
<syntaxhighlight lang="bash"><br />
#!/bin/bash<br />
files_dir=$1<br />
except_dir=$2<br />
move_dir=$3<br />
<br />
bannr() {<br />
echo "Scripto paleidimo pavyzdys:"<br />
echo "./find_dups /Volumes/Data/A /Volumes/Data/A/original /Volumes/Data/A/duplicates"<br />
echo "nurodytu direktoriju pabaigose neturi buti / (slashu)"<br />
}<br />
<br />
<br />
if [[ -z "$files_dir" ]]; then<br />
echo "klaida: nenurodyta failu direktorija"<br />
bannr<br />
exit;<br />
fi<br />
<br />
if [[ -z "$except_dir" ]]; then<br />
echo "klaida: nenurodyta kurios direktorijos neliesti"<br />
bannr<br />
exit;<br />
fi<br />
<br />
if [[ -z "$move_dir" ]]; then<br />
echo "klaida: nenurodyta i kuria direktorija duplikatus perkelti"<br />
exit;<br />
fi<br />
<br />
if [ ! -d "$move_dir" ]; then<br />
mkdir $move_dir<br />
fi<br />
<br />
find $files_dir -type f -exec openssl sha1 \{\} \; > /tmp/list.txt<br />
<br />
count=-1<br />
total=0<br />
for l in `cat /tmp/list.txt | sed 's/SHA1(\(.*\))\= \(.*\)$/\2 \1/' | awk '{print $1}' | sort | uniq -c | sort -nr`<br />
do<br />
if [[ $count == -1 ]]<br />
then<br />
count=$l<br />
else <br />
hash=$l<br />
if [[ $count == 1 ]]<br />
then<br />
break<br />
fi<br />
for f in `grep $hash /tmp/list.txt | sed 's/SHA1(\(.*\))\= \(.*\)$/\2 \1/' | awk '{print $2}'`<br />
do<br />
if [[ $count > 1 ]]<br />
then<br />
if [[ $f == *"$except_dir"* ]]; then<br />
echo "duplikatas $f randasi direktorijoje kuri nurodyta kaip nelieciama"<br />
else<br />
echo "keliam: $f i $move_dir"<br />
mv -f $f $move_dir/<br />
fi<br />
count=$((count-1))<br />
fi<br />
done<br />
total=`expr $total + $count`<br />
count=-1<br />
fi<br />
done<br />
</syntaxhighlight><br />
<br />
<br />
[[Category:Scripts]]</div>
\dev\null