Zusätzlich zu grundlegenden Vorgängen wie der Suche nach Dateien in einer Verzeichnisstruktur können Sie mit dem Befehl „find“ auch einige praktische Vorgänge ausführen, um Ihre Befehlszeilenreise zu vereinfachen.
In diesem Artikel werden 15 Linux-Suchbefehle vorgestellt, die sowohl für Anfänger als auch für Veteranen sehr nützlich sind.
Erstellen Sie zunächst die folgende leere Datei in Ihrem Home-Verzeichnis, um das folgende Suchbefehlsbeispiel zu testen.
01 # vim create_sample_files.sh
02 touch MybashProgram.sh
03 touch mycprogram.c
04 touch MyCProgram.c
05 Berühren Sie Program.c
06
07 Mkdir-Sicherung
08 CD-Sicherung
09
10 Berühren Sie MybashProgram.sh
11 Berühren Sie mycprogram.c
12 Berühren Sie MyCProgram.c
13 Berühren Sie Program.c
14
15 # chmod +x create_sample_files.sh
16
17 # ./create_sample_files.sh
18
19 # ls -R
20 .:
21 backup MybashProgram.sh MyCProgram.c
22 create_sample_files.sh mycprogram.c Program.c
23
24 ./backup:
25 MybashProgram.sh mycprogram.c MyCProgram.c Program.c
1. Dateien nach Dateinamen suchen
Dies ist eine grundlegende Verwendung des Suchbefehls. Das folgende Beispiel zeigt, wie MyCProgram.c als Suchname verwendet wird, um Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen zu finden.
1 # find -name "MyCProgram.c"
2 ./backup/MyCProgram.c
3 ./MyCProgram.c
2. Dateien nach Dateinamen suchen, Groß- und Kleinschreibung ignorieren
Dies ist eine grundlegende Verwendung des Suchbefehls. Das folgende Beispiel zeigt, wie Sie Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen finden, indem Sie MyCProgram.c als Suchnamen verwenden und dabei die Groß-/Kleinschreibung ignorieren.
1 # find -iname "MyCProgram.c"
2 ./mycprogram.c
3 ./backup/mycprogram.c
4 . /backup/MyCProgram.c
5 ./MyCProgram.c
3. Begrenzen Sie die Tiefe der Suche im angegebenen Verzeichnis
im Stammverzeichnis und seine Unterverzeichnisse Suchen Sie die passwd-Datei.
1 # find / -name passwd
2 ./usr/share/doc/nss_ldap-253/pam.d/passwd
3 ./usr/bin/ passwd
4 ./etc/pam.d/passwd
5 ./etc/passwd
Suchen Sie nach passwd im Stammverzeichnis und seinen 1-Ebenen-tiefen Unterverzeichnissen. (Zum Beispiel Root – Ebene 1 und ein Unterverzeichnis – Ebene 2)
1 # find -max Depth 2 -name passwd
2 ./etc/passwd
at Suchen Sie die passwd-Datei im Stammverzeichnis und seinen Unterverzeichnissen mit einer maximalen Tiefe von zwei Ebenen (z. B. Stammverzeichnis – Ebene 1 und zwei Unterverzeichnisse – Ebene 2 und 3)
1 # find /. -max Depth 3 -name passwd
2 ./usr/bin/passwd
3 ./etc/pam.d/passwd
4 ./etc/passwd
In Suchen Sie die passwd-Datei zwischen dem Unterverzeichnis der zweiten Ebene und dem Unterverzeichnis der vierten Ebene.
1 # find -mintiefe 3 -maxtiefe 5 -name passwd
2 ./usr/bin/passwd
3 ./etc/pam.d/passwd
4. Führen Sie den Befehl für die Datei aus, die mit dem Befehl „find“ gefunden wurde.
Das folgende Beispiel zeigt den Befehl „find“, um die MD5-Überprüfung aller Dateien mit dem Namen „MyCProgram.c“ und ohne Berücksichtigung der Groß-/Kleinschreibung zu berechnen. {} wird durch den aktuellen Dateinamen ersetzt.
1 find -iname "MyCProgram.c" -exec md5sum {} ;
2 d41d8cd98f00b204e9800998ecf8427e ./mycprogramm.c
3 d41d8cd98f00b204e9800998ecf 8427e ./backup/mycprogram.c
4 d41d8cd98f00b204e9800998ecf8427e ./backup/MyCProgram.c
5. Im Gegensatz dazu werden bei der Übereinstimmung mit
alle Namen angezeigt, die nicht zu MyCProgram.c gehören. Da max Depth 1 ist, werden nur Dateien und Verzeichnisse im aktuellen Verzeichnis angezeigt.
1 find -max Depth 1 -not -iname "MyCProgram.c"
2 .
3 ./MybashProgram.sh . c
Jede Datei hat eine eindeutige Inode-Nummer , anhand derer wir die Datei unterscheiden können. Erstellen Sie zwei Dateien mit ähnlichen Namen, beispielsweise eine mit nachgestellten Leerzeichen und eine ohne.
1 Berühren Sie „Testdateiname“
2
3 # Berühren Sie „Testdateiname“
4 [Hinweis: Es gibt ein Leerzeichen am Ende]
5
6 # ls -1 test*
7 Testdateiname
8 Testdateiname
Anhand der Ausgabe von ls kann nicht erkannt werden, welche Datei ein nachgestelltes Leerzeichen hat. Mit der Option -i können Sie die Inode-Nummer der Datei sehen und so die beiden Dateien unterscheiden.
1 ls -i1 test*
2 16187429 test-file-name
3 16187430 test-file-name
Sie können es wie gezeigt tun Geben Sie unten die Inode-Nummer im Suchbefehl an. Hier benennt der Befehl „find“ eine Datei mit der Inode-Nummer um.
1 find -inum 16187430 -exec mv {} new-test-file-name ;
2
3 # ls -i1 *test*
4 16187430 Name der neuen Testdatei
5 16187429 Name der Testdatei
Sie können etwas tun, wenn Sie etwas mit diesen schlecht benannten Dateien wie oben tun möchten. Verwenden Sie diese Technik beim Betrieb. Die Datei mit dem Namen file?.txt enthält beispielsweise ein Sonderzeichen im Namen. Wenn Sie „rm file?.txt“ ausführen möchten, werden alle drei unten angezeigten Dateien gelöscht. Führen Sie also die folgenden Schritte aus, um die Datei „file?.txt“ zu löschen. 1 ls 2 file1.txt file2.txt file?.txt Finden Sie die Inode-Nummer jeder Datei.
1 ls -i1
2 804178 file1.txt
3 804179 file2.txt
4 804180 file?.txt
Wie unten gezeigt: Verwenden Sie die Inode-Nummer, um Dateinamen mit Sonderzeichen zu entfernen.
Die meisten Ausgabedateien der folgenden Befehle sind gesperrte Dateien und platzieren Hoder, die von anderen Programmen erstellt wurden
1 find ~ -empty
Listen Sie nur leere Dateien in Ihrem Home-Verzeichnis auf.
1 find . -max Depth 1 -empty
Nur nicht versteckte leere Dateien im aktuellen Verzeichnis auflisten.
1 find . -maxlength 1 -empty -not -name ".*"
9. Finden Sie die 5 größten Dateien
Der folgende Befehl listet das aktuelle Verzeichnis auf 5 größte Dateien im Unterverzeichnis. Dies kann eine Weile dauern, abhängig von der Anzahl der Dateien, die der Befehl verarbeiten muss.
1 find . -type f -exec ls {} ;. head -5
Die Die Methode ähnelt der Suche nach den 5 größten Dateien, der Unterschied besteht darin, dass die Sortierreihenfolge absteigend ist.
1 find . -type f -exec ls {} ; sort -n |
Im obigen Befehl ist es wahrscheinlich nur ein leerer Befehl Datei (0-Byte-Datei). Sie können also den folgenden Befehl verwenden, um die kleinsten Dateien anstelle von 0-Byte-Dateien aufzulisten.
1 find . -not -empty -type f -exec ls {} ; head -5
11 Typ
Nur Socket-Dateien finden
1 find Alle normalen Dateien finden
1 find . -type f
Finde alle versteckten Dateien
1 find . -type f -name ".*"
Alle versteckten Verzeichnisse finden
1 find -type d -name ".*"
12. Dateien durch Vergleich der Änderungszeiten mit anderen Dateien finden
In der angegebenen Datei anzeigen die später geändert wurden. Der folgende Suchbefehl zeigt alle Dateien an, die nach „ordinary_file“ erstellt und geändert wurden.
01 ls -lrt
02 total 0
03 -rw-r----- 1 root root 0 2009-02-19 20:27 other_can_also_read
04 ----r----- 1 Wurzel Wurzel 0 2009-02-19 20:27 other_can_only_read
05 -rw------ 1 Wurzel Wurzel 0 2009- 02 -19 20:29 gewöhnliche_datei
06 -rw-r--r-- 1 Wurzel Wurzel 0 2009-02-19 20:30 jeder_read
07 -rwxrwxrwx 1 Wurzel Wurzel 0 2009 - 19.02. 20:31 all_for_all
08 ---------- 1 Wurzel Wurzel 0 19.02.2009 20:31 no_for_all
09
10 # find -newer common_file
11 ./everybody_read
13 ./all_for_all
14 ./no_for_all
13. Dateien nach Dateigröße suchen
Verwenden Sie die Option -size, um Dateien nach Dateigröße zu suchen.
Suchen Sie nach Dateien, die größer als die angegebene Datei sind
1 finden Sie ~ -size +100M
Suchen Sie nach Dateien, die kleiner als die angegebene Datei sind
1 finden Sie ~ -size -100M
Dateien finden, die der angegebenen Größe entsprechen
1 find ~ -size 100M
Hinweis: – bedeutet kleiner als die angegebene Größe, + bedeutet größer als die angegebene Größe. Kein Symbol zeigt genau die gleiche Größe wie eine bestimmte Größe an.
14. Geben Sie Aliase für häufig verwendete Suchoperationen
Wenn Sie etwas Nützliches finden, können Sie ihm einen Alias geben. Und führen Sie es überall aus, wo Sie wollen.
Wird häufig zum Löschen von a.out-Dateien verwendet.
1 alias rmao="find . -iname a.out -exec rm {} ;"
2 # rmao
Löschen Sie die vom C-Programm generierte Kerndatei.
1 alias rmc="find . -iname core -exec rm {} ;"
2 # rmc
15. Verwenden Sie den Befehl „find“, um große Paketdateien zu löschen 🎜>
Der folgende Befehl löscht *.zip-Dateien, die größer als 100 MB sind. 1 find / -type f -name *.zip -size +100M -exec rm -i {} ;" Verwenden Sie den Alias rm100m, um alle Heavy Rain 100M *.tar-Dateien zu löschen . Verwenden Sie die gleiche Idee, um einen Kategorienamen von rm1g, rm2g, rm5g zu erstellen, um alle Dateien zu löschen, die größer als 1G, 2G, 5G sind 1 alias rm100m="find / -type f -name *. tar -size +. 100M -exec rm -i {} ;" 2 # alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} ;" 3 # alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} ;" 4 # alias rm5g="find / - type f -name * .tar -size +5G -exec rm -i {} ;" 5 6 # rm100m7 # rm1g
8 # rm2g
9 # rm5g
Befehlsbeispiel finden (Teil 2)
Weitere 15 praktische Artikel für verwandte Artikel Um Linux-Befehlsbeispiele zu finden, achten Sie bitte auf die chinesische PHP-Website!