GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare ed eliminare file duplicati in Linux

Eseguo sempre il backup dei file di configurazione o di tutti i vecchi file da qualche parte nel mio disco rigido prima di modificarli o modificarli, quindi posso ripristinarli dal backup se accidentalmente ho fatto qualcosa di sbagliato. Ma il problema è che ho dimenticato di ripulire quei file e il mio disco rigido è pieno di molti file duplicati dopo un certo periodo di tempo. Mi sento troppo pigro per pulire i vecchi file o ho paura di poter eliminare un file importante. Se sei come me e sei sopraffatto da più copie degli stessi file in diverse directory di backup, puoi trovare ed eliminare i file duplicati utilizzando gli strumenti forniti di seguito in sistemi operativi simili a Unix.

Un avvertimento:

Si prega di fare attenzione durante l'eliminazione dei file duplicati. Se non stai attento, ti porterà a una perdita accidentale di dati . Ti consiglio di prestare particolare attenzione durante l'utilizzo di questi strumenti.

Trova ed elimina file duplicati in Linux

Ai fini di questa guida, parlerò di tre utilità, ovvero,

  1. Trova,
  2. Due,
  3. FSlint.

Queste tre utilità sono gratuite, open source e funzionano sulla maggior parte dei sistemi operativi simili a Unix.

1. Trova

Rdfind , sta per r edundant d ata trova , è un'utilità gratuita e open source per trovare file duplicati in e/o all'interno di directory e sottodirectory. Confronta i file in base al loro contenuto, non ai nomi dei file. Rdfind utilizza la classifica algoritmo per classificare file originali e duplicati. Se hai due o più file uguali, Rdfind è abbastanza intelligente da trovare quale è il file originale e considerare il resto dei file come duplicati. Una volta trovati i duplicati, te li segnalerà. Puoi decidere di eliminarli o sostituirli con collegamenti reali o link simbolici (soft) .

Installazione di Rdfind

Rdfind è disponibile in AUR . Quindi, puoi installarlo in sistemi basati su Arch utilizzando qualsiasi programma di supporto AUR come Yay come mostrato di seguito.

$ yay -S rdfind

Su Debian, Ubuntu, Linux Mint:

$ sudo apt-get install rdfind

Su Fedora:

$ sudo dnf install rdfind

Su RHEL, CentOS:

$ sudo yum install epel-release
$ sudo yum install rdfind

Utilizzo

Una volta installato, esegui semplicemente il comando Rdfind insieme al percorso della directory per cercare i file duplicati.

$ rdfind ~/Downloads

Scansiona una directory con Rdfind

Come puoi vedere nello screenshot sopra, il comando Rdfind analizzerà la directory ~/Download e salverà i risultati in un file chiamato results.txt nella directory di lavoro corrente. È possibile visualizzare il nome dei possibili file duplicati nel file results.txt.

$ cat results.txt 
# Automatically generated
# duptype id depth size device inode priority name
DUPTYPE_FIRST_OCCURRENCE 1469 8 9 2050 15864884 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test5.regex
DUPTYPE_WITHIN_SAME_TREE -1469 8 9 2050 15864886 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test6.regex
[...]
DUPTYPE_FIRST_OCCURRENCE 13 0 403635 2050 15740257 1 /home/sk/Downloads/Hyperledger(1).pdf
DUPTYPE_WITHIN_SAME_TREE -13 0 403635 2050 15741071 1 /home/sk/Downloads/Hyperledger.pdf
# end of file

Esaminando il file results.txt, puoi trovare facilmente i duplicati. Puoi rimuovere i duplicati manualmente se lo desideri.

Inoltre, puoi -dryrun opzione per trovare tutti i duplicati in una determinata directory senza modificare nulla e visualizzare il riepilogo nel tuo Terminale:

$ rdfind -dryrun true ~/Downloads

Una volta trovati i duplicati, puoi sostituirli con collegamenti fisici o collegamenti simbolici.

Per sostituire tutti i duplicati con hardlink, esegui:

$ rdfind -makehardlinks true ~/Downloads

Per sostituire tutti i duplicati con collegamenti simbolici/soft link, eseguire:

$ rdfind -makesymlinks true ~/Downloads

Potresti avere dei file vuoti in una directory e volerli ignorare. In tal caso, utilizza -ignoreempty opzione come di seguito.

$ rdfind -ignoreempty true ~/Downloads

Se non vuoi più i vecchi file, elimina i file duplicati invece di sostituirli con collegamenti fisici o virtuali.

Per eliminare tutti i duplicati, esegui semplicemente:

$ rdfind -deleteduplicates true ~/Downloads

Se non vuoi ignorare i file vuoti ed eliminarli insieme a tutti i duplicati, esegui:

$ rdfind -deleteduplicates true -ignoreempty false ~/Downloads

Per maggiori dettagli, fare riferimento alla sezione della guida:

$ rdfind --help

E, le pagine di manuale:

$ man rdfind

Lettura consigliata:

  • Rimuovi i file duplicati dal tuo Android con il correttore di file duplicati

2. Dupe

Fdupe è un'altra utilità della riga di comando per identificare e rimuovere i file duplicati all'interno di directory e sottodirectory specificate. È un'utilità open source gratuita scritta in C linguaggio di programmazione. Fdupes identifica i duplicati confrontando le dimensioni dei file, le firme MD5 parziali, le firme MD5 complete e, infine, eseguendo un confronto byte per byte per la verifica.

Simile all'utilità Rdfind, Fdupes viene fornito con una manciata di opzioni per eseguire operazioni, come:

  • Cerca ricorsivamente i file duplicati nelle directory e nelle sottodirectory
  • Escludi dalla considerazione i file vuoti ei file nascosti
  • Mostra la dimensione dei duplicati
  • Elimina immediatamente i duplicati non appena si sono incontrati
  • Escludi file con proprietario/gruppo o bit di autorizzazione diversi come duplicati
  • E molto altro ancora.

Installazione di Fdupes

Fdupes è disponibile nei repository predefiniti della maggior parte delle distribuzioni Linux.

Su Arch Linux e le sue varianti come Antergos, Manjaro Linux, installalo usando Pacman come di seguito.

$ sudo pacman -S fdupes

Su Debian, Ubuntu, Linux Mint:

$ sudo apt-get install fdupes

Su Fedora:

$ sudo dnf install fdupes

Su RHEL, CentOS:

$ sudo yum install epel-release
$ sudo yum install fdupes

Utilizzo

L'utilizzo di Fdupes è piuttosto semplice. Basta eseguire il comando seguente per scoprire i file duplicati in una directory, ad esempio ~/Downloads .

$ fdupes ~/Downloads

Esempio di output dal mio sistema:

/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

Come puoi vedere, ho un file duplicato in /home/sk/Downloads/ directory. Mostra solo i duplicati dalla directory principale. Come visualizzare i duplicati dalle sottodirectory? Usa semplicemente -r opzione come di seguito.

$ fdupes -r ~/Downloads

Ora vedrai i duplicati da /home/sk/Downloads/ directory e anche le sue sottodirectory.

Fdupes può anche essere in grado di trovare duplicati da più directory contemporaneamente.

$ fdupes ~/Downloads ~/Documents/ostechnix

Puoi anche cercare in più directory, una ricorsivamente come di seguito:

$ fdupes ~/Downloads -r ~/Documents/ostechnix

I comandi precedenti cercano i duplicati nella directory "~/Downloads" e nella directory "~/Documents/otechnix" e nelle sue sottodirectory.

A volte, potresti voler conoscere la dimensione dei duplicati in una directory. In tal caso, usa -S opzione come di seguito.

$ fdupes -S ~/Downloads
403635 bytes each: 
/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

Allo stesso modo, per visualizzare le dimensioni dei duplicati nelle directory padre e figlio, utilizzare -Sr opzione.

Possiamo escludere dalla considerazione i file vuoti e nascosti utilizzando -n e -A rispettivamente.

$ fdupes -n ~/Downloads
$ fdupes -A ~/Downloads

Il primo comando escluderà dalla considerazione i file di lunghezza zero e il secondo escluderà dalla considerazione i file nascosti durante la ricerca di duplicati nella directory specificata.

Per riassumere le informazioni sui file duplicati, utilizza -m opzione.

$ fdupes -m ~/Downloads
1 duplicate files (in 1 sets), occupying 403.6 kilobytes

Per eliminare tutti i duplicati, utilizza -d opzione.

$ fdupes -d ~/Downloads

Esempio di output:

[1] /home/sk/Downloads/Hyperledger Fabric Installation.pdf
[2] /home/sk/Downloads/Hyperledger Fabric Installation(1).pdf

Set 1 of 1, preserve files [1 - 2, all]:

Questo comando ti chiederà di conservare ed eliminare tutti gli altri duplicati. Basta inserire un numero qualsiasi per preservare il file corrispondente ed eliminare i file rimanenti. Prestare maggiore attenzione durante l'utilizzo di questa opzione. Potresti eliminare i file originali se non stai attento.

Se vuoi conservare il primo file in ogni serie di duplicati ed eliminare gli altri senza chiedere ogni volta, usa -dN opzione (non consigliata).

$ fdupes -dN ~/Downloads

Per eliminare i duplicati quando vengono rilevati, utilizza -I bandiera.

$ fdupes -I ~/Downloads

Per maggiori dettagli su Fdupes, guarda la sezione della guida e le pagine man.

$ fdupes --help
$ man fdupes

Leggi anche:

  • Correttore di foto duplicate:organizza bene la tua libreria di foto

3. Flint

FSlint è un'altra utility per la ricerca di file duplicati che utilizzo di tanto in tanto per eliminare i file duplicati non necessari e liberare spazio su disco nel mio sistema Linux. A differenza delle altre due utilità, FSlint ha entrambe le modalità GUI e CLI. Quindi, è uno strumento più intuitivo per i principianti. FSlint non trova solo i duplicati, ma anche collegamenti simbolici errati, nomi errati, file temporanei, IDS errati, directory vuote e binari non spogliati ecc.

Installazione di FSlint

FSlint è disponibile in AUR , quindi puoi installarlo utilizzando qualsiasi helper AUR.

$ yay -S fslint

Su Debian, Ubuntu, Linux Mint:

$ sudo apt-get install fslint

Su Fedora:

$ sudo dnf install fslint

Su RHEL, CentOS:

$ sudo yum install epel-release
$ sudo yum install fslint

Una volta installato, avvialo dal menu o dall'utilità di avvio dell'applicazione.

Ecco come appare la GUI di FSlint.

Interfaccia FSlint

Come puoi vedere, l'interfaccia di FSlint è intuitiva e autoesplicativa. Nel percorso di ricerca scheda, aggiungi il percorso della directory che desideri scansionare e fai clic su Trova pulsante nell'angolo in basso a sinistra per trovare i duplicati. Seleziona l'opzione ricorsiva per cercare in modo ricorsivo i duplicati nelle directory e nelle sottodirectory. FSlint analizzerà rapidamente la directory data e le elencherà.

GUI di fslint

Dall'elenco, scegli i duplicati che desideri pulire e seleziona uno qualsiasi di essi in base ad azioni come Salva, Elimina, Unisci e Collegamento simbolico.

Nei Parametri di ricerca avanzata scheda, puoi specificare i percorsi da escludere durante la ricerca di duplicati.

fslint ricerca avanzata

Opzioni della riga di comando di FSlint

FSlint fornisce una raccolta delle seguenti utilità CLI per trovare duplicati nel tuo filesystem:

  • scoperta -- trova i file DUplicate
  • trovanl -- trova Name Lint (problemi con i nomi dei file)
  • findu8 -- trova nomi di file con codifica utf8 non valida
  • trovabl -- trova collegamenti errati (vari problemi con i collegamenti simbolici)
  • trova -- trova lo stesso nome (problemi con i nomi in conflitto)
  • trovato -- trova le directory vuote
  • trovato -- trova i file con ID utente morti
  • trova -- trova eseguibili non strippati
  • trova -- trova spazi bianchi ridondanti nei file
  • trova -- trova i file temporanei
  • trova -- trova biblioteche possibilmente inutilizzate
  • zipdir -- Recupera lo spazio sprecato nelle voci della directory ext2

Tutte queste utilità sono disponibili in /usr/share/fslint/fslint/fslint posizione.

Ad esempio, per trovare duplicati in una determinata directory, eseguire:

$ /usr/share/fslint/fslint/findup ~/Downloads/

Allo stesso modo, per trovare directory vuote, il comando sarebbe:

$ /usr/share/fslint/fslint/finded ~/Downloads/

Per ottenere maggiori dettagli su ciascuna utilità, ad esempio findup , esegui:

$ /usr/share/fslint/fslint/findup --help

Per maggiori dettagli su FSlint, fare riferimento alla sezione della guida e alle pagine man.

$ /usr/share/fslint/fslint/fslint --help
$ man fslint

Conclusione

Ora conosci tre strumenti per trovare ed eliminare file duplicati indesiderati in Linux. Tra questi tre strumenti, utilizzo spesso Rdfind. Ciò non significa che le altre due utilità non siano efficienti, ma finora sono semplicemente soddisfatto di Rdfind. Bene, è il tuo turno. Qual è il tuo strumento preferito e perché? Facci sapere nella sezione commenti qui sotto.


Linux
  1. Come trovare file con autorizzazioni SUID e SGID in Linux

  2. Come trovare e rimuovere le foto duplicate in Linux

  3. Linux Elimina file e directory

  4. Come trovare ed eliminare directory e file vuoti in Unix

  5. Come posso eliminare in modo ricorsivo tutti i file e le directory vuoti in Linux?

Come trovare ed eliminare i collegamenti simbolici interrotti in Linux

I 3 migliori strumenti per trovare ed eliminare file duplicati in Linux

Come trovare ed eliminare file duplicati in Ubuntu usando Fdupes

Come trovare ed eliminare directory vuote in Linux

Come trovare file duplicati in Linux e rimuoverli

Come eliminare file e directory utilizzando la riga di comando di Linux