Heim  >  Artikel  >  php教程  >  15 praktische Linux-Find-Befehlsbeispiele

15 praktische Linux-Find-Befehlsbeispiele

高洛峰
高洛峰Original
2016-12-14 17:32:091351Durchsuche

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.

1 Find -inum 804180 -exec RM {}; 🎜>5 [Hinweis: Die Datei mit dem Namen „Datei?.txt“ ist jetzt entfernt]

7. Suchen Sie Dateien basierend auf Dateiberechtigungen

Die folgenden Vorgänge sind sinnvoll:

Dateien mit angegebenen Berechtigungen finden

Andere Berechtigungsbits ignorieren und prüfen, ob sie mit den angegebenen Berechtigungen übereinstimmen

Suche basierend auf Berechtigungen, die in der angegebenen Oktal-/Notation ausgedrückt werden

Dieses Beispiel: vorausgesetzt, das Verzeichnis enthält die folgenden Dateien. Beachten Sie, dass diese Dateien unterschiedliche Berechtigungen haben.

1 ls -l

2 total 0

3 -rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all

4 -rw -r--r-- 1 Wurzel Wurzel 0 2009-02-19 20:30 every_read

5 -------- 1 Wurzel Wurzel 0 2009-02-19 20:31 no_for_all

6 -rw------- 1 root root 0 2009-02-19 20:29 gewöhnliche_datei

7 -rw-r----- 1 root root 0 2009 -02 -19 20:27 other_can_also_read

8 ----r----- 1 root root 0 2009-02-19 20:27 other_can_only_read

Suchen Sie das Gruppenleseberechtigungsdokument. 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 Wurzel Wurzel 0 2009-02-19 20:31 ./all_for_all

4 ----r----- 1 Wurzel 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 die Datei, die nur Leseberechtigungen für Gruppenbenutzer hat.

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. Alle leeren Dateien (0-Byte-Dateien) im Home-Verzeichnis und in den Unterverzeichnissen finden

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 # rm100m

7 # 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn