[Einführung] Zusätzlich zum grundlegenden Vorgang 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
in Ihrem Home-Verzeichnis. Zusätzlich zu grundlegenden Vorgängen wie der Suche nach Dateien in einer Verzeichnisstruktur können Sie 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 |
10 |
touch MybashProgram.sh |
15 |
# chmod +x create_sample_files.sh |
17 |
# ./create_sample_files.sh |
21 |
backup MybashProgram.sh MyCProgram.c |
22 |
create_sample_files.sh mycprogram.c Program.c |
25 |
MybashProgram.sh mycprogram.c MyCProgram.c Program.c |
1 Suchen Sie eine Datei anhand ihres Namens
Dies ist eine der Befehle finden Grundlegende Verwendung. 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. 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" |
3. Begrenzen Sie die Tiefe der Suche für das angegebene Verzeichnis mit min Depth und max Depth.
Suchen Sie die passwd-Datei im Stammverzeichnis und seine Unterverzeichnisse.
2 |
./usr/share/doc/nss_ldap-253/pam.d/passwd |
Suchen Sie im Stammverzeichnis und einem Unterverzeichnis eine Ebene tiefer (z. B. Stammverzeichnis – Ebene 1 und ein Unterverzeichnis – Ebene 2)
1 |
# find -maxdepth 2 -name passwd |
Suchen Sie nach der passwd-Datei im Stammverzeichnis und seinen Unterverzeichnissen bis zu zwei Ebenen tief (z. B. Stammverzeichnis – Ebene 1 und zwei Unterverzeichnisse – Ebene 2 und 3)
1 |
# find / -maxdepth 3 -name passwd |
Suchen Sie nach der passwd-Datei zwischen dem Unterverzeichnis der zweiten Ebene und dem Unterverzeichnis der vierten Ebene.
1 |
# find -mindepth 3 -maxdepth 5 -name passwd |
4. Führen Sie den Befehl für die mit dem Suchbefehl gefundene Datei aus.
Das folgende Beispiel zeigt den Suchbefehl zur Berechnung aller Dateinamen, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird Prüfsumme für die Datei „MyCProgram.c“. {} wird durch den aktuellen Dateinamen ersetzt.
1 |
find -iname "MyCProgram.c" -exec md5sum {} ; |
2 |
d41d8cd98f00b204e9800998ecf8427e ./mycprogram.c |
3 |
d41d8cd98f00b204e9800998ecf8427e ./backup/mycprogram.c |
4 |
d41d8cd98f00b204e9800998ecf8427e ./backup/MyCProgram.c |
5 |
d41d8cd98f00b204e9800998ecf8427e ./MyCProgram.c |
5 Im Gegensatz dazu werden beim Abgleichen von
alle Dateien oder Verzeichnisse angezeigt, deren Namen nicht MyCProgram.c sind. Da max Depth 1 ist, werden nur Dateien und Verzeichnisse im aktuellen Verzeichnis angezeigt.
1 |
find -maxdepth 1 -not -iname "MyCProgram.c" |
4 |
./create_sample_files.sh |
6. Dateien mithilfe von Inode-Nummern finden
Jede Datei hat eine eindeutige Inode-Nummer, sodass wir sie unterscheiden können Dateien. Erstellen Sie zwei Dateien mit ähnlichen Namen, beispielsweise eine mit nachgestellten Leerzeichen und eine ohne.
3 |
# touch "test-file-name " |
4 |
[Note: There is a space at the end] |
Aus der Ausgabe von ls ist es nicht möglich zu unterscheiden, 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.
2 |
16187429 test-file-name |
3 |
16187430 test-file-name |
Sie können die Inode-Nummer im Suchbefehl wie unten gezeigt angeben. Hier benennt der Befehl „find“ eine Datei mit der Inode-Nummer um.
1 |
find -inum 16187430 -exec mv {} new-test-file-name ; |
4 |
16187430 new-test-file-name |
5 |
16187429 test-file-name |
Sie können diese Technik verwenden, wenn Sie etwas mit einer schlecht benannten Datei wie der oben genannten tun möchten. 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.
2 |
file1.txt file2.txt file?.txt |
Finden Sie die Inode-Nummer jeder Datei.
lautet wie folgt: Verwenden Sie die Inode-Nummer, um diese Dateinamen mit speziellen Symbolen zu entfernen.
1 |
find -inum 804180 -exec rm {} ; |
5 |
[Note: The file with name "file?.txt" is now removed] |
7. Suchen Sie Dateien basierend auf Dateiberechtigungen
Die folgenden Vorgänge sind sinnvoll:
-
Suchen Sie die Datei mit den angegebenen Berechtigungen
Ignorieren Sie andere Berechtigungsbits und prüfen Sie, ob sie mit den angegebenen Berechtigungen übereinstimmt
Entsprechend den Angaben oktal/ Symbolausdruck-Berechtigungssuche
In diesem Beispiel wird davon ausgegangen, dass das Verzeichnis die folgenden Dateien enthält. Beachten Sie, dass diese Dateien unterschiedliche Berechtigungen haben.
3 |
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all |
4 |
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read |
5 |
---------- 1 root root 0 2009-02-19 20:31 no_for_all |
6 |
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file |
7 |
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read |
8 |
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read |
Datei mit Gruppenleseberechtigungen gefunden. Verwenden Sie den folgenden Befehl, um Dateien im aktuellen Verzeichnis zu finden, die Leseberechtigungen für Benutzer in derselben Gruppe haben, und ignorieren Sie dabei andere Berechtigungen für die Datei.
1 |
find . -perm -g=r -type f -exec ls -l {} ; |
2 |
-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read |
3 |
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all |
4 |
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read |
5 |
-rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read |
Suchen Sie nach Dateien mit schreibgeschützten Berechtigungen für Gruppenbenutzer.
1 |
find . -perm g=r -type f -exec ls -l {} ; |
2 |
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read |
Suchen Sie nach Dateien, die nur Leseberechtigungen für Gruppenbenutzer haben (mithilfe des oktalen Berechtigungsformulars).
1 |
find . -perm 040 -type f -exec ls -l {} ; |
2 |
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read |
8. Finden Sie alle leeren Dateien (0-Byte-Dateien) im Home-Verzeichnis und in den Unterverzeichnissen
Die meisten Ausgabedateien der folgenden Befehle sind gesperrte Dateiboxen Von anderen Programmen erstellte Hoders
listen nur leere Dateien in Ihrem Home-Verzeichnis auf.
1 |
find . -maxdepth 1 -empty |
Es werden nur nicht versteckte leere Dateien im aktuellen Verzeichnis aufgelistet.
1 |
find . -maxdepth 1 -empty -not -name ".*" |
9. Finden Sie die 5 größten Dateien
Der folgende Befehl listet die 5 größten Dateien im aktuellen Verzeichnis und in den Unterverzeichnissen auf. Dies kann eine Weile dauern, abhängig von der Anzahl der Dateien, die der Befehl verarbeiten muss.
1 |
find . -type f -exec ls -s {} ; | sort -n -r | head -5 |
10. Die Methode zum Suchen der 5 kleinsten Dateien
ähnelt der Methode zum Suchen der 5 größten Dateien. Der Unterschied besteht darin, dass die Sortierreihenfolge absteigend ist.
1 |
find . -type f -exec ls -s {} ; | sort -n | head -5 |
Im obigen Befehl ist es sehr wahrscheinlich, dass Sie nur eine leere Datei (0-Byte-Datei) sehen. 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 -s {} ; | sort -n | head -5 |
11. Verwenden Sie -type, um nach Dateien eines bestimmten Dateityps zu suchen
Nur nach Socket-Dateien suchen
Nach allen Verzeichnissen suchen
Alle allgemeinen Dateien finden
Alle versteckten Dateien finden
1 |
find . -type f -name ".*" |
Alle versteckten Verzeichnisse finden
1 |
find -type d -name ".*" |
12 Dateien Änderungszeiten vergleichen, um Dateien zu finden
Zeigt Dateien an, die nach der angegebenen Datei geändert wurden. Der folgende Suchbefehl zeigt alle Dateien an, die nach „ordinary_file“ erstellt und geändert wurden. 13. Dateien nach Dateigröße suchen
Verwenden Sie die Option -size, um Dateien nach Dateigröße zu suchen.
03 |
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read |
Dateien suchen, die größer als die angegebene Datei sind
04 |
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read |
05 |
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file |
Dateien suchen, die kleiner als die angegebene Datei sind
Dateien finden, die der angegebenen Größe entsprechen
Hinweis: – bedeutet kleiner als die angegebene Größe, + bedeutet kleiner als die angegebene Größe Größe Große Größe. Kein Symbol zeigt genau die gleiche Größe wie eine bestimmte Größe an.
14. Geben Sie Aliasnamen für häufig verwendete Suchvorgänge an.
Wenn Sie etwas Nützliches finden, können Sie ihm einen Aliasnamen zuweisen. 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 {} ;" |
Löschen Sie die vom C-Programm generierte Kerndatei.
1 |
alias rmc="find . -iname core -exec rm {} ;" |
15. Verwenden Sie den Befehl „Suchen“, 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 *.tar-Dateien von Heavy Rain 100M zu löschen. Mit der gleichen Idee können Sie einen Kategorienamen von rm1g, rm2g und rm5g erstellen, um alle Dateien zu löschen, die größer als 1G, 2G und 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 {} ;" |
Befehlsbeispiel finden (Teil 2)
Das obige ist der detaillierte Inhalt vonLinux findet 15 häufig verwendete Befehle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!