Kezdőlap › Fórumok › Programozás › Bash – azonos fájlok keresése
- This topic has 26 hozzászólás, 6 résztvevő, and was last updated 17 years, 7 months telt el by
ELaci.
-
SzerzőBejegyzés
-
2007-11-12-21:26 #2140432
Tehát az azonos file-okat törölni akarod. (Ill. egyet megtartani.)
Én azt tenném, hogy minden file-nál két különböző módszerrel kiszámolnék egy ellenőrző összeget és listát készítenék egy file-ba. (De igen nagy valószínűséggel egy file-méret + egy ellenőrző összeg is elég.)Így nézne ki:
elérési_út/filenév méret md5Ezek után csak végig kell futtatni a sorokon egy scriptet, hogy, ha a méret és az md5 azonos, akkor akkor a másodikat törölje. (Vagy a 3 adat külön sorban. Tán még egyszerűbb kezelni.)
man md5sum
Én így csinálnám. (Persze az ellenőrző összeg számításának ideje a méret meg a file-ok számától erősen függ.)
2007-11-12-21:26 #2140433Tehát az azonos file-okat törölni akarod. (Ill. egyet megtartani.)
Én azt tenném, hogy minden file-nál két különböző módszerrel kiszámolnék egy ellenőrző összeget és listát készítenék egy file-ba. (De igen nagy valószínűséggel egy file-méret + egy ellenőrző összeg is elég.)Így nézne ki:
elérési_út/filenév méret md5Ezek után csak végig kell futtatni a sorokon egy scriptet, hogy, ha a méret és az md5 azonos, akkor akkor a másodikat törölje. (Vagy a 3 adat külön sorban. Tán még egyszerűbb kezelni.)
man md5sum
Én így csinálnám. (Persze az ellenőrző összeg számításának ideje a méret meg a file-ok számától erősen függ.)
2007-11-13-15:07 #2140434Merhogy nekem is szükség volt rá, összebogarásztam egy ilyet:
Code:find . -type f -name ‘*’ -exec md5sum -b ‘{}’ ; |sort |uniq -D -w32 |cut -d”*” -f2Ez a fenti bigyó, az azonos md5 -el rendelkező fileokat írja ki az összes alkönyvtárból.
EL
Szerk.:
Ami még fontos: az első megtaláltat nem veszi duplának, ezért azt nem írja ki, tehát az az első példány megmaradhat.2007-11-13-15:07 #2140435Merhogy nekem is szükség volt rá, összebogarásztam egy ilyet:
Code:find . -type f -name ‘*’ -exec md5sum -b ‘{}’ ; |sort |uniq -D -w32 |cut -d”*” -f2Ez a fenti bigyó, az azonos md5 -el rendelkező fileokat írja ki az összes alkönyvtárból.
EL
Szerk.:
Ami még fontos: az első megtaláltat nem veszi duplának, ezért azt nem írja ki, tehát az az első példány megmaradhat.2007-11-13-19:58 #2140436köszi, így már menni fog.
2007-11-13-19:58 #2140437köszi, így már menni fog.
2007-11-14-17:32 #2140438Ha már lúd akkor legyen kövér címmel, megcsináltam a duplakeresőt kdialógban.
Akinek van KDE, az használhatja, no meg tanulni is lehet belőle, akinek ez eddig ismeretlen volt. 🙂Code:#!/bin/bash
# dupla fileokat keres, majd betolti kwrite-ba
#dir=`kdialog –title „Dupla file keresés könyvtárban” –getexistingdirectory .`
x=$?
if test „$x” = „0” ; then
list=`mktemp -t -p /tmp`
find $dir -type f -name ‘*’ >$list
count=`wc -l $list |cut -d” ” -f1`
echo „Fileok száma: $count”sumlist=`mktemp -t -p /tmp`
ref=`kdialog –progressbar „$count file, md5sum létrehozás…” $count`
dcop $ref showCancelButton truefor i in `cat $list`; do
md5sum -b „$i” >>$sumlist
if test „true” == `dcop $ref wasCancelled`; then
dcop $ref close
rm -f $list $sumlist
exit
fi
inc=$((`dcop $ref progress` + 1))
dcop $ref setProgress $inc
done
dcop $ref closermlist=`mktemp -t -p /tmp`
sort $sumlist |uniq -D -w32 |cut -d”*” -f2 |sort >$rmlist
rm -f $list $sumlistif test -s $rmlist ; then
kwrite $rmlist &
else
kdialog –msgbox „Nincs dupla file.”
rm -f $rmlist
fi
fiAzért kiváncsi lennék rá hogy másnál hogy fut?
EL
Szerk.:
Utólag vettem észre hogy a szóközös és egyéb írásjeleket tartalmazó fileneveket rosszul kezeli a program.
No, mindegy. Majd még bütykölök rajta.2007-11-14-17:32 #2140439Ha már lúd akkor legyen kövér címmel, megcsináltam a duplakeresőt kdialógban.
Akinek van KDE, az használhatja, no meg tanulni is lehet belőle, akinek ez eddig ismeretlen volt. 🙂Code:#!/bin/bash
# dupla fileokat keres, majd betolti kwrite-ba
#dir=`kdialog –title „Dupla file keresés könyvtárban” –getexistingdirectory .`
x=$?
if test „$x” = „0” ; then
list=`mktemp -t -p /tmp`
find $dir -type f -name ‘*’ >$list
count=`wc -l $list |cut -d” ” -f1`
echo „Fileok száma: $count”sumlist=`mktemp -t -p /tmp`
ref=`kdialog –progressbar „$count file, md5sum létrehozás…” $count`
dcop $ref showCancelButton truefor i in `cat $list`; do
md5sum -b „$i” >>$sumlist
if test „true” == `dcop $ref wasCancelled`; then
dcop $ref close
rm -f $list $sumlist
exit
fi
inc=$((`dcop $ref progress` + 1))
dcop $ref setProgress $inc
done
dcop $ref closermlist=`mktemp -t -p /tmp`
sort $sumlist |uniq -D -w32 |cut -d”*” -f2 |sort >$rmlist
rm -f $list $sumlistif test -s $rmlist ; then
kwrite $rmlist &
else
kdialog –msgbox „Nincs dupla file.”
rm -f $rmlist
fi
fiAzért kiváncsi lennék rá hogy másnál hogy fut?
EL
Szerk.:
Utólag vettem észre hogy a szóközös és egyéb írásjeleket tartalmazó fileneveket rosszul kezeli a program.
No, mindegy. Majd még bütykölök rajta.2007-11-23-18:31 #2140440Jobb később, mint még később:
https://oss.euedge.com/wiki/UaMainPageua is a simple command-line tool that finds sets of identical files. The name ua is derived from the Hungarian word ugyanaz meaning the same.
2007-11-23-18:31 #2140441Jobb később, mint még később:
https://oss.euedge.com/wiki/UaMainPageua is a simple command-line tool that finds sets of identical files. The name ua is derived from the Hungarian word ugyanaz meaning the same.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz