Heim > Artikel > System-Tutorial > 7 leistungsstarke Anwendungen des Find-Befehls unter Linux
Okay, ich kann versuchen, eine tiefgründige Pseudo-Originalversion dieses Absatzes zu erstellen. Das ist meine modifizierte Version:
Unter Linux ist der Suchbefehl einer der Vorgänge, die Back-End-Entwickler beherrschen müssen, es sei denn, Sie verwenden Windows Server.
Es ist auch ein häufiges Thema in technischen Interviews. Hier ist eine echte Frage:
Wenn Sie auf Ihrem Linux-Server ein Verzeichnis namens „logs“ haben, wie löschen Sie darin Protokolldateien, auf die zuletzt vor mehr als einem Jahr zugegriffen wurde? 🤔
Diese Situation kommt sehr häufig vor, aber überraschenderweise kann nicht jeder Entwickler diesen Befehl im Interview klar formulieren.
Antwort: Zuerst müssen wir den Befehl cd verwenden, um das entsprechende Verzeichnis aufzurufen. Dann lautet der Befehl wie folgt:
linuxmi@linuxmi:~/www.linuxmi.com$ find . -type f -atime +365 -exec rm -rf {} \;
Wenn Sie die oben genannten Befehle nicht vollständig verstehen, machen Sie sich keine Sorgen. In diesem Artikel werden sieben praktische Anwendungen des Suchbefehls vorgestellt, damit Sie ihn schließlich beherrschen können. Wenn Sie das bereits wissen, ist die Lektüre dieses Artikels eine gute Auffrischung.
Beginnen wir mit der einfachsten Verwendung. Um nach Dateien mit einem bestimmten Namen zu suchen, lautet der Befehl wie folgt:
linuxmi@linuxmi:~/www.linuxmi.com$ find . -name linuxmi.sh
Das .-Symbol im obigen Code gibt den aktuellen Pfad an. Wenn wir unter einem anderen Pfad nach Dateien suchen möchten, geben Sie einfach Folgendes an:
linuxmi@linuxmi:~/www.linuxmi.com$ find /home/linuxmi/linuxmi.com -name linuxmi.png
Wie finde ich alle Bilder im PNG-Format? Verwenden Sie reguläre Ausdrücke:
find /home/linuxmi/linuxmi.com -name "*.png"
Standardmäßig sucht der Suchbefehl nach regulären Dateien, es ist jedoch besser, den Typ anzugeben, um alles klarer zu machen:
find /home/linuxmi/linuxmi.com -type f -name "*.png"
Zusätzlich zur Suche nach gewöhnlichen Dateien können wir auch nach anderen Dateitypen suchen, indem wir die Option -type angeben.
Zum Beispielverzeichnis:
find . -type d -name "linuxmi*"
oder symbolischer Link:
find . -type l -name "linuxmi*"
Um Dateien anhand eines bestimmten Zeitstempels zu durchsuchen, müssen wir drei verschiedene Zeitstempel in Linux-Systemen kennen:
Zugriffszeitstempel (atime): Der Zeitpunkt, zu dem die Datei zuletzt gelesen wurde. Änderungszeitstempel (mtime): Der Zeitpunkt, zu dem der Dateiinhalt zuletzt geändert wurde. Änderungszeitstempel (ctime): Die Metadaten einer Datei, z. B. wann sie zuletzt geändert wurde, wie Eigentümer, Speicherort, Dateityp und Berechtigungseinstellungen.
Um nach Dateien zu suchen, die älter als ein Jahr sind, können wir, genau wie bei der eingangs erwähnten Interviewfrage, den folgenden Befehl schreiben:
linuxmi@linuxmi:~$ find . -type f -atime +365
Wenn wir Dateien finden müssen, deren mtime genau vor 5 Tagen liegt, dürfen wir das +-Zeichen nicht verwenden, da es „größer als“ bedeutet.
linuxmi@linuxmi:~$ find . -type f -mtime 5
Natürlich bedeutet das +-Zeichen „größer als“ und das –-Zeichen „kleiner als“. Daher können wir nach Dateien mit einer Laufzeit zwischen 5 und 10 Tagen suchen:
linuxmi@linuxmi:~$ find . -type f -ctime +5 -ctime -10
-size können wir Dateien nach einer bestimmten Größe finden. Wir können die Maßeinheit mithilfe der folgenden Konvention angeben:
b
:512字节块(默认)
c
:字节
w
:两字节单词
k
:千字节
M
:兆字节
G
:千兆字节
与按时间戳查找文件类似,+号表示“大于”,-号表示“小于”。例如,要查找大小在10兆字节和1千兆字节之间的文件:
find . -type f -size +10M -size -1G
适当控制文件的权限是Linux管理员的重要任务。find命令的-perm选项可以帮助我们按特定权限搜索文件:
find . -type f -perm 777
例如,上述命令将搜索所有具有777权限的文件,这意味着文件对其所有者、组和所有用户具有读、写和执行权限。
这个任务很简单。我们只需要在-user选项中指定一个用户名。例如,以下命令将找到所有属于 linuxmi 的文件:
find -type f -user linuxmi
在大多数情况下,我们希望在找到所需文件后执行一些后续操作,例如删除它们、检查它们的详细信息等等。-exec命令使所有这些操作变得更加简单。
现在,为了理解如何使用它,让我们回到之前提到的面试问题:
find . -type f -atime +365 -exec rm -rf {} ;
上述命令中-exec选项后面是rm -rf,用于删除文件。{}是找到的结果的占位符。
注意:占位符{}非常重要,特别是如果你想要删除文件。因为如果你不使用它,命令将对所有文件执行,而不仅仅是通过find命令找到的文件。
为了尝试一下,在终端上执行以下两个命令并检查它们的结果有什么不同:
一个使用了占位符:
find . -type f -atime +5 -exec ls {} ;
另一个没有使用:
find . -type f -atime +5 -exec ls ;
跟在-exec选项后面的命令必须以分号结束。正如我们所知,转义字符用于取消单个字符的特殊含义。在Linux中,反斜杠\被用作转义字符。因此,我们将其用于分号字符。
阅读完find命令的7个用途后,之前提到的面试问题现在看起来非常简单了。现在你能直接写出答案并清楚地解释吗?
find . -type f -atime +365 -exec rm -rf {};
感谢阅读。如果你喜欢,请关注Linux迷 www.linuxmi.com 以享受更多精彩文章。 🙂
Das obige ist der detaillierte Inhalt von7 leistungsstarke Anwendungen des Find-Befehls unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!