So finden Sie identische Dateien in Linux

So finden Sie identische Dateien in Linux

Während der Nutzung des Computers entsteht im System eine Menge Datenmüll. Am häufigsten wird dieselbe Datei an verschiedenen Orten gespeichert. Dies führt dazu, dass viel Speicherplatz belegt wird und das System immer langsamer läuft.

Wenn auf Ihrem Computer also nicht genügend Speicherplatz vorhanden ist, können Sie versuchen, solche Dateien zu löschen, um Speicherplatz freizugeben. Unter Linux können wir dieselbe Datei im System finden, indem wir den Inode-Wert der Datei ermitteln.

Ein Inode ist eine Datenstruktur, die alle Informationen zu einer Datei aufzeichnet, außer dem Dateinamen und dem Dateiinhalt. Wenn zwei oder mehr Dateien denselben Inode-Wert haben, sind ihre Inhalte, Eigentümer und Berechtigungen tatsächlich gleich, auch wenn ihre Dateinamen und Speicherorte unterschiedlich sind, und wir können sie als dieselbe Datei betrachten.

Bei diesem Dateityp handelt es sich eigentlich um einen sogenannten „Hardlink“. Hardlinks haben denselben Inode-Wert, aber unterschiedliche Dateinamen. Ein Softlink ist eigentlich eine Verknüpfung, die auf die Zieldatei zeigt, aber über einen eigenen Inode-Wert verfügt.

$ ls -l mein*
-rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 meine Datei
lrwxrwxrwx 1 liangxu liangxu 6. April 15 11:18 myref -> myfile
-rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 mytwin

Wir können nicht direkt wissen, welche Dateien im selben Verzeichnis denselben Inode-Wert haben, aber es ist nicht schwierig, sie zu identifizieren. Tatsächlich können wir diese Dateien direkt finden, indem wir den Befehl ls -i verwenden und nach Inode-Wert sortieren.

$ ls -i | sort -n | mehr
 ...
 788000 meine Datei <==
 788000 mein Zwilling <==
 801865 Namensschilder.pdf
 786692 Verlasse niemals wütend das Haus
 920242 NFCU_Dokumente
 800247 nmap-Hinweise

In der ersten Spalte dieses Ergebnisses steht der entsprechende Inode-Wert. Anhand dieses Ergebnisses können wir auf einen Blick erkennen, welche Dateien den gleichen Inode-Wert haben.

Wenn Sie nur die entsprechende Hardlink-Datei einer Datei finden möchten, können wir den Befehl „find“ verwenden und die Option „-samefile“ hinzufügen, um sie schnell zu finden.

$ find . -samefile meinedatei
./meineDatei
./speichern/meineKopie
./meinZwilling

Diese Dateien haben alle den gleichen Inode-Wert. Wenn Sie das nicht glauben, können Sie mit dem Befehl ls weitere Informationen anzeigen:

$ finde . -samefile meinedatei -ls
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 ./meineDatei
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 ./speichern/mycopy
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 ./mytwin

Wir können sehen, dass die Informationen dieser Dateinamen, mit Ausnahme der Dateinamen, genau gleich sind. Aufmerksame Freunde bemerken möglicherweise, dass die zweite Spalte (Anzahl der Hardlinks) 4 beträgt, aber tatsächlich haben wir nur 3 Dateien gefunden, was bedeutet, dass es eine andere Datei gibt, die den Inode-Wert mit ihnen teilt, die wir jedoch nicht über diesen Befehl gefunden haben.

Für mich als faule Person ist es zu mühsam, jedes Mal Befehle einzugeben, daher kann ich einfach das Skript verwenden, um dieselben Dateien im Verzeichnis zu finden!

#!/bin/bash

# sucht nach Dateien, die Inodes teilen

vorherige=""

# Dateien nach Inode auflisten
sort -n > /tmp/$0

# Datei nach doppelten Inode-Nummern durchsuchen
während Zeile gelesen wird
Tun
  inode=`echo $line | awk '{print $1}'`
  wenn [ "$inode" == "$prev" ]; dann
    grep $inode /tmp/$0
  fi
  vorherige=$inode
erledigt < /tmp/$0

# aufräumen
rm /tmp/$0

Laufergebnisse:

$ ./findHardLinks
 788000 meine Datei
 788000 mein Zwilling

Natürlich können Sie auch den Befehl „find“ verwenden, um alle identischen Dateien im System basierend auf dem Inode-Wert zu finden.

$ find / -inum 788000 -ls 2> /dev/null
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /tmp/mycopy
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /home/liangxu/meineDatei
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /home/liangxu/speichern/mycopy
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /home/liangxu/mytwin

In diesem Befehl leiten wir die Fehlermeldung an die spezielle Datei /dev/null um, sodass bei der Suche nach Pfaden, für die wir keine Zugriffsberechtigung haben, der Bildschirm nicht mit der Meldung „Berechtigung verweigert“ gefüllt wird.

Dies ist das Ende dieses Artikels zum Auffinden identischer Dateien in Linux. Weitere Informationen zum Auffinden identischer Dateien in Linux finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Zusammenfassung von fünf Suchbefehlen in Linux
  • So finden Sie eine Datei in Linux unscharf
  • Die Linux-Shell sucht nach Dateien und zeigt Zeilennummern und entsprechende Intervalle an
  • Welcher Befehl eignet sich besser für die unscharfe Suche nach Dateien in Linux?
  • Beispiel für die Dateisuche mit dem Linux-Befehl „find“
  • Detaillierte Erklärung, wie man in Linux nach Zeit gefilterte Dateien in einem Verzeichnis findet
  • So finden Sie Dateien in Linux
  • Vollständige Anleitung zur Dateisuche in Linux

<<:  js canvas realisiert Bilder mit abgerundeten Ecken

>>:  Beispielanalyse der MySQL-Variablenverwendung [Systemvariablen, Benutzervariablen]

Artikel empfehlen

MySQL 1130-Ausnahme, Remote-Anmeldung nicht möglich – Lösung

Inhaltsverzeichnis Frage: 1. Aktivieren Sie die B...

Detaillierte Erläuterung der FTP-Umgebungskonfigurationslösung (vsftpd)

1. Installieren Sie die vsftpd-Komponente Install...

Methoden und Schritte zum Bereitstellen mehrerer War-Pakete in Tomcat

1 Hintergrund JDK1.8-u181 und Tomcat8.5.53 wurden...

Detaillierte Untersuchung von vue2.x - Erklärung der h-Funktion

Inhaltsverzeichnis Lösung, Zusammenfassen: Vue-Pr...

Detaillierte Schritte zum Erstellen eines NFS-Dateifreigabeservers unter Linux

Linux erstellt NFS-Server Um den Datenaustausch z...

CocosCreator allgemeines Framework-Design Ressourcenmanagement

Inhaltsverzeichnis Probleme mit der Ressourcenver...

Beispiel für eine erzwungene Konvertierungsmethode für MySQL-Zeichenfolgen

Vorwort Da die Typen derselben Felder in den beid...

Detaillierte Erklärung zur Verwendung des MySQL-Datentyps DECIMAL

Der MySQL DECIMAL Datentyp wird zum Speichern exa...

Detailliertes Tutorial zur Installation von Prometheus mit Docker

Inhaltsverzeichnis 1. Node Exporter installieren ...