Linux - jak vyhledat duplicitní soubory

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

Linux - jak vyhledat duplicitní soubory

Před 3 lety napsal Zweihander

Vyřešeno Linux - How to find duplicate files
DD, potřeboval bych na linux ubuntu v adresáři home vyhledat duplicitní soubory, lze k tomu využít nějaký balíček nebo jen příkaz? Dík

The English language is translated by machine - the translator can modify eg cited codes = it is better to use codes from the Czech original.

Linux - How to find duplicate files

DD, I need to search for linux ubuntu in the home directory to find duplicate files, can you use a package or just a command? Thanks

Zobrazit odpovědi

Nejlépe hodnocení uživatelé
Hanz

Počet UP: 5142

React: 224

Rusty

Počet UP: 2365

React: 105

OL3G

Počet UP: 1651

React: 65

Strosmajer

Počet UP: 502

React: 31

Oxytocin

Počet UP: 303

React: 27

SYSTEM

Počet UP: 443

React: 27

Hyacint

Počet UP: 43

React: 22

Odpovědi na dotaz

RE: Linux - jak vyhledat…

Před 3 lety napsal Hanz (update 29.01.2020)

Zkontrolováno

Ahoj,

k hledání duplicitních souborů na GNU/Linux přes bash použij fdupes - je standardně v repositářích.

Takto vyhledáš duplicitní soubory v adresáři /home včetně podadresářů :
fdupes -r /home

Takto vyhledáš duplicitní soubory mezi dvěma adresáři /home/user a /mnt/backup včetně podadresářů :
fdupes -r /home/user /mnt/backup

S parametrem d rovnou můžeš duplicitní soubory mazat a parametrem S zobrazíš velikost:
fdupes -rdS /home
Výsledek pak je, že se ti to takto zeptá, který soubor zachovat (např. níže bylo nalezeno 199 duplicit):
Set 1 of 199, preserve files [1 - 2, all] (1848059712 bytes each).
(1=zachovat první, 2=zachovat druhý, all=zachovat oba)

To samé s tím, že se tě nebude fdupes ptát zda chceš soubor smazat:
fdupes -rdN /home

Další možností je nástoj diff, takto porovnáš dva soubory a smažeš duplikát:
diff soubor1 soubor2 && rm soubor2

Pokud preferuješ grafické rozhraní, tak použij fslint.

Další alternativy jsou:
rdfind (CLI)
fslint (GUI)
dupeGuru (GUI)

The English language is translated by machine - the translator can modify eg cited codes = it is better to use codes from the Czech original.

Linux - How to find duplicate files


Here's how to find duplicate files in the / home directory, including subdirectories:
fdupes -r / home

Here's how to find duplicate files between two / home / user and / mnt / backup directories, including subdirectories:
fdupes -r / home / user / mnt / backup

With d you can delete duplicate files straight away, and S will display the size:
fdupes -rdS / home
As a result, it will ask you which file to keep (for example, 199 duplicates were found below):
Set 1 of 199, preserve files [1 - 2, all] (1848059712 bytes).
(1 = keep first, 2 = keep second, all = keep both)

The same thing that fdupes won't ask you if you want to delete the file:
fdupes -rdN / home

Another option is the diff tool, comparing two files and deleting the duplicate:
diff file1 file2 && rm file2

If you prefer a graphical interface, use fslint .

Other alternatives are:
rdfind
fslint (GUI)
dupeGuru (GUI)

RE: Linux - jak vyhledat…

Před 0 lety napsal Zweihander (update 03.02.2020)

Zkontrolováno


0
Potřeboval jsem pak ještě nějaké ultra rychlé hledání (možných) duplicitních souborů tak, aby se nedělal sum (hash, md5 atd), což strašně trvá. Pro tento účel jsem chtěl hledat jen duplicitní soubory se stejnou velikostí, což je hned. Našel jsem k tomuto tento příkaz a funguje bezvadně = vrátí jen soubory, které mají stejnou velikost:

find /cesta/adresar -type f -printf "%10s\t%p\n" | sort --numeric | uniq --repeated --check-chars=10

Případně duplicity dle shodného názvu:
find /cesta/adresar -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'

The English language is translated by machine - the translator can modify eg cited codes = it is better to use codes from the Czech original.

Linux - How to find duplicate files

Then I needed some ultra fast search for (possible) duplicate files so that it wouldn't do sum (hash, md5 etc), which takes so much time. For this purpose I just wanted to look for duplicate files of the same size, which is now. I found this command and works flawlessly = returns only files that are the same size:

find /cesta/adresar -type f -printf "%10s\t%p\n" | sort --numeric | uniq --repeated --check-chars=10

Or duplicate by same name:
find /path/dir -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'
Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace