Grep und Find -Operatorenregeln für Linux
- 1791
- 496
- Dario Hiebl
Anfänglich hatten UNIX/Linux -Betriebssysteme keine grafische Schnittstelle, da sie sich auf die Verwendung von Server konzentrierten. In dieser Hinsicht sind sie Windows in dieser Hinsicht nicht unterlegen, weshalb Benutzer, die dieses Betriebssystem verwenden. In der Zwischenzeit ist dies ein sehr leistungsfähiges Tool, mit dem Sie schnell Vorgänge ausführen können, die mit den grundlegenden Tools des Betriebssystems problematisch oder unmöglich sind. Heute treffen Sie Fund- und Grep -Operatoren, die für das Dateisystem aller Linux -Verteilungen grundlegend sind.
Die Ernennung von Fund- und Grep -Betreibern
Das Find -Team in Linux ist der Befehlszeilenbetreiber, der mit Dateien arbeitet, die die vorhandene Hierarchie umgehen. Sie können mit vielen Filtern nach Dateien suchen und nach ihrer erfolgreichen Suche bestimmte Aktionen über Dateien ausführen. Zu den Kriterien für das Durchsuchen von Dateien gehört fast alle verfügbaren Attribute, vom Erstellungsdatum bis zur Lösung.
Das GREP -Team in Linux bezieht sich auch auf Suchmaschinen, jedoch innerhalb der Dateien. Die wörtliche Übersetzung des Teams ist der „globale Druck regelmäßiger Ausdrücke“, aber das Siegel hier bedeutet die Schlussfolgerung der Ergebnisse der Arbeiten auf dem Gerät standardmäßig, was normalerweise der Monitor ist. Der Bediener wird ziemlich oft verwendet und ermöglicht es Ihnen, in einem oder mehreren Dateien gemäß den angegebenen Fragmenten (Vorlagen) zu suchen. Da sich die Terminologie in Linux erheblich von solchen in Windows unterscheidet, haben viele Benutzer mit diesen Befehlen erhebliche Schwierigkeiten. Wir werden versuchen, diesen Nachteil zu beseitigen.
Grep und Syntax finden
Beginnen wir mit dem Find -Operator. Die Syntax des Dateisuchteams sieht folgt aus:
Finden Sie [wo man aussehen] [Parameter] [-optische] [Aktion]
Einige verwenden Parameter:
- -Tiefe: Suche im aktuellen Ordner und Subkatalisten;
- -Version: Bringen Sie die Version des Teams mit;
- -Drucken: Vollständige Dateinamen anzeigen (unter Linux können sie willkürlich groß sein);
- -Geben Sie F: Suchen ausschließlich Dateien durchsuchen
- -Geben Sie D - Nur Verzeichnis (Ordner) durchsuchen.
Liste der verfügbaren Optionen (über einen Bindestrich angegeben):
- Name: Dateisuche nach Namen;
- Benutzer: Suche nach Namen des Dateibesitzers;
- Perm: gemäß dem Attribut "Zugriffsmodus";
- Mtime: Zum Zeitpunkt der letzten Änderung (Bearbeiten) der Datei;
- Gruppe: nach Gruppe;
- athime: bis zum Datum der letzten Öffnung der Datei;
- Neuere: Suche nach einer Datei mit einem Datum, das mehr als eine in der Vorlage angegebene Richtlinie angegeben ist;
- Größe: nach der Größe der Datei in Bytes;
- Nouser: Suchen Sie nach Dateien mit kein eingegebenem Attribut "Besitzer".
Grep -Syntax:
GREP [Options] Vorlage [wo man ansieht]
Die Optionen sollten als zusätzliche Klärungsparameter verstanden werden, z. B. die Verwendung des inversen Regimes oder die Suche nach einer bestimmten Anzahl von Zeilen.
Die Vorlage gibt an.
Die Möglichkeit, reguläre Ausdrücke zu verwenden, kann die Suchfunktionen erheblich erweitern. Ein Hinweis auf die Standard -Schlussfolgerung kann nützlich sein, wenn die Aufgabe darin besteht, die in den Protokollen aufgezeichneten Fehler zu filtern oder nach dem PID.
Betrachten Sie die häufigsten GRAS -Parameter:
- -B: Zeigen Sie die Blocknummer an, bevor Sie die resultierende Linie ausgeben
- -C: Es ist notwendig, die Anzahl der Einträge des gewünschten Fragments zu berechnen
- -I: Suche ohne Register;
- -N: Geben Sie eine Zeilennummer an das Standardausgabergerät aus, in dem ein gewünschtes Fragment oder eine gewünschte Vorlage gefunden wurde
- - L: Infolge der Ausstellung sollten nur die Namen von Dateien mit einem gefundenen Suchfragment vorhanden sein
- -S: Fehlerausgabe ignorieren;
- -W: Suche nach einem Fragment, das von Räumen auf beiden Seiten umgeben ist;
- -V: Umgekehrte Suche, dh die Anzeige aller Zeilen, die kein bestimmtes Fragment enthalten;
- -E: Der Parameter zeigt an, dass ein regulärer Ausdruck, der eine eigene Syntax hat, weiter folgt
- -AN: Die Schlussfolgerung des gewünschten Fragments und früheren N -Zeilen;
- -BN: Das gleiche, aber mit den Zeilen, die der Vorlage nachgehen.
Jetzt ist es sinnvoll, sich vom theoretischen Teil zum Praktischen zu bewegen.3
Beispiele für die Verwendung von Versorgungsunternehmen
Wenn Sie wissen, welche Kombinatorik sind, sollte die wahre Anzahl möglicher Kombinationen der Suchteams dargestellt werden. Wir werden uns nur auf die nützlichsten Beispiele beschränken, die für Sie während der Arbeit nützlich sein können.
Suchen Sie nach Text in Dateien
Lassen Sie uns die Rechte des Administrators haben, und wir haben die Aufgabe, einen bestimmten Benutzer in einer riesigen Passwortdatei zu finden. Wir benötigen ein ziemlich einfaches Team, das den Dateiveröffentlichungsweg angibt:
Grep -Namenser /etc /passwd
Wenn das Suchergebnis positiv ist, erhalten wir eine resultierende Zeile von ungefähr dem folgenden Typ:
NAMEUSER: X: 1021: 1021: NameUser ,,,:/home/user:/bin/bash
Wenn Sie nach einem Textfragment suchen müssen, ohne das Registerregister zu berücksichtigen, sieht das Team so aus:
Gras -i "namuser" /etc /passwd
In diesem Fall finden sich der Nameuser -Benutzer und der Namensgebern -Nameuser sowie alle anderen möglichen Kombinationen.
Die Schlussfolgerung mehrerer Linien
Lassen Sie uns alle Fehler aus dem Protokoll der Fensterschale Xorg erhalten.Protokoll. Die Aufgabe wird durch die Tatsache kompliziert, dass nach fehlerhafter Zeichenfolge, die wertvolle Informationen enthält, folgen kann. Es wird beschlossen, dass wir den Befehl dazu zwingen, mehrere Zeilen mit der Zeile "PP" als Vorlage anzuzeigen:
Gras -a5 "pp"/var/log/xorg.0.Protokoll
Wir erhalten eine Zeile mit einer Vorlage und 5 Zeilen danach.
Gras -c3 "pp"/var/log/xorg.0.Protokoll
Zeilenausgabe mit einem Fragment des Textes und drei Zeilen vor und nachher.
Verwenden regelmäßiger Ausdrücke in Grep
Dies ist eines der leistungsstärksten Linux -Tools, das die Möglichkeit einer Suchvorlage erheblich erweitert. Regelmäßige Ausdrücke haben ihre eigene Syntax, ziemlich kompliziert. Wir werden uns nicht damit befassen und uns auf das Beispiel der Verwendung von RV beschränken. Wie Sie bereits wissen, wird der -e -Parameter verwendet, um anzuzeigen, dass der reguläre Ausdruck weiter verwendet wird.
Lassen Sie uns in der Nachrichtendatei.2 Wir müssen alle Zeilen für September fangen:
Grep "^SEP 09"
Das Ergebnis wird so etwas sein:
Sep 09 01:11:45 GS124 NTPD [2243]: Zeitreset +0.197579 s
Sep 09 01:19:10 GS124 NTPD [2243]: Zeitreset +0.203484 s
Um nach einer Vorlage am Ende der Barzeile zu suchen, wird das Symbol „$“ verwendet:
Grep "Begriff.$ "Nachrichten
Ergebnis:
17. Juni 19:01:19 Cloneme Kernel: Log Daemon Begriff.
11. September 06:30:54 Cloneme Kernel: Log Daemon Begriff.
Und hier ist ein Beispiel für die Verwendung eines regulären Ausdrucks, mit dem Sie nach Zeilen suchen können, die Zahlen außer Null enthalten:
Grep "[1-9]"/var/log/xorg.1.Protokoll
Verwenden einer rekursiven Suche in Grep
Wenn Sie mit dem Begriff "Rekursion" vertraut sind, wird in Linux diese Technik insbesondere in mehreren Dateien im Katalog und seinen Subkatalen nach einem Fragment gesucht. Die Option -r zeigt das Vorhandensein einer Rekursion an. Suchen wir nach einem Fragment "namedomain.Org "in Dateien in den Unterkatalen des Ordners /etc /apache1:
Gras -r "namedomain.Org "/etc/apache1/
Das Ergebnis kann so etwas sein:
/etc/apache1/vhosts.D/ namedomain.Org
Wenn der Dateiname nicht erforderlich ist, verwenden wir die -h: h:
Grep -h -r "namedomain.Org "/etc/apache1/
Suche nach Wörtern
Standard Die Suche nach dem QWE -Fragment endet mit der Ausstellung aller Wörter, in denen dieses Fragment gefunden wird: KBQWE, QWE123, Aafrqwe32. Um die Suche nur mit einem bestimmten Fragment zu begrenzen, müssen Sie den Parameter -W verwenden:
Gras -W "Qwe" wo zu finden
Suche nach zwei oder mehr Wörtern
Komplizieren Sie die Aufgabe: Wir müssen alle Zeilen finden, in denen zwei Wörter gefunden werden. Das Team wird so sein:
GRAS -W "Word01 | Word02" Wo_ zu finden
Die Anzahl der Zeilen
Falls erforderlich, um zu berechnen. Wie oft das gewünschte Fragment in der Datei gefunden wird, verwenden wir das Design mit dem -C -Parameter:
Gras -c "'text" wo_ zu finden
Der Parameter -n hilft herauszufinden, in welcher Linie die gewünschte Vorlage gefunden wird:
Gras -n "nuser" /etc /passwd
Umgekehrte Suche mit Grep
Manchmal besteht die Aufgabe der Suche nach Grep durch den Inhalt der Dateien darin, den Eintrag selbst nicht zu finden, sondern die Zeilen, in denen dieses Fragment fehlt. Die Option -v hilft uns:
Gras -v "txt" wo_ zu finden
Die Ausgabe des Dateinamens
Lassen Sie Sie alle Dateien im angegebenen Verzeichnis finden, das die gewünschte Vorlage enthält. Dies kann mit dem Parameter -l erfolgen. Der vollständige Befehl für die Ausgabe von Dateien, die die Zeichenfolge "sekundär" im Ordner /ETC enthalten, sieht also wie folgt aus:
Grep -l "sekundär" /etc
Farbausgabe mit Grep
Wenn Sie in einer anderen Farbe bleiben, können Sie den gewünschten Eintrag visualisieren, der die Ladung der Augen erheblich reduziert, wenn die Operation häufig durchgeführt wird. Es stellt sich heraus, dass Gras eine Option für diese Ausgabe der Suchergebnisse hat:
Grrepor --farbe "sekundär" /etc
Wir gehen zur Prüfung der Beispiele für die Verwendung des Find -Dienstprogramms unter Linux fort.
Suchen Sie nach allen Dateien
Um eine Liste der Dateien im aktuellen Katalog abzuziehen, verwenden wir den Befehl im folgenden Format:
Finden .
Wenn Sie den vollständigen Namen der Dateien anzeigen müssen, verwenden wir den Befehl
Finden . -Drucken
Dateiausgabe in einem bestimmten Katalog
Um nach Dateien in einem vom Benutzer definierten Ordner zu suchen, verwenden wir den Befehl
Finden ./usw
Wie können Sie jedoch Dateien finden, die ein bestimmtes Fragment im aktuellen Katalog enthalten:
Finden . -NAME "*.GIF "
Wenn die Suche ohne Berücksichtigung des Registers durchgeführt werden muss, muss der Befehl geändert werden:
Berücksichtigen Sie das Register bei der Suche nach Namen nicht:
Finden . -In mir "*.GIF "
Begrenzung der Tiefe der Suche
Eine weitere ziemlich typische Aufgabe besteht darin, nach Dateien in einem bestimmten Ordner nach einem angegebenen Namen zu suchen:
Finden . -maxdepth01 1 -name "**.Html "
Invertieren die Vorlage
Wir haben bereits ein Analogon des Teams in Betracht gezogen, um nach Zeilen zu suchen, die kein bestimmtes Fragment enthalten. Auf die gleiche Weise können Sie mit Dateien ausgehen, die einer bestimmten Vorlage nicht entsprechen:
Finden . -Nicht -name "Benutzer*"
Suche nach mehreren Kriterien
Wir geben ein Beispiel für die Befehlszeile mit dem Versuchsprogramm für die Suche nach zwei Kriterien unter Verwendung des Not -Operators (Exclusion):
Finden . -Name "Benutzer" -not -name "**.Html "
In diesem Fall werden Dateien, deren Name ein Benutzerfragment enthält, aber eine Erweiterung enthält, nicht gefunden. Anstelle eines Ausnahmeoperators können Sie das logische "/" oder ":: verwenden
Finde -name "*.js "-o -name"*.SQL "
In diesem Fall erhalten wir eine vollständige Liste von Dateien mit beiden Erweiterungen im aktuellen Verzeichnis.
Suche in mehreren Katalogen
Wenn wir Dateien in zwei Katalogen finden müssen, geben Sie einfach aus der Lücke an:
Finden Sie -Typ f ./test01 ./test02 -name "*.SQL "
Suche nach versteckten Dateien
In Linux gibt es wie in Windows versteckte Dateien, die bei Verwendung des Befehls zum Finden nicht ohne ein spezielles Symbol angezeigt werden. Dieses Symbol ist Tilda, und die Richtlinie wird den folgenden Blick haben:
~ -name finden ".*"
Suchen Sie nach Dateien unter Linux nach Berechtigungen
Manchmal besteht die Notwendigkeit, den Katalog für eine bestimmte Maske von Rechten zu filtern. Wenn wir beispielsweise Dateien mit einem Attribut 0661 finden müssen, verwenden wir den Befehl:
Finden . -Perm 0661
Die Aufgabe, Dateien mit dem Attribut "nur zum Lesen" zu filtern, wird wie folgt gelöst:
Finden Sie /etc /user -perm /u = r
Aber wie sieht die Suche nach ausführbaren Dateien im ETC -Katalog aus:
Finden Sie /etc -perm /a = x
Suchen Sie nach Dateien nach Gruppen/Benutzern
Der Administrator muss sich häufig der Aufgabe der Suche nach Dateien stellen, die die Eigenschaft eines bestimmten Benutzers und/oder einer bestimmten Gruppe sind. Suche nach Benutzer:
Finden . -Benutzer Slavko
Für Benutzergruppen wird ein weiterer Parameter verwendet:
Devs finden /var -Gruppen
Suche nach Datum der letzten Änderung
Das sichtbare Format des Datums der Datei im Linux -Betriebssystem ist genau das Datum seiner Änderung (das gleiche Prinzip wird in Windows verwendet). Um eine Liste nach Datum zu bilden, wird die MTIME -Option verwendet. Angenommen, wir müssen vor zwei Monaten geänderte Dateien finden:
Finden /Zuhause -Mtime 60
Unter den Attributen der Datei gibt es ein Datum der letzten Entdeckung (ohne Änderungen vorzunehmen). Solche Dateien werden durch den folgenden Befehl angezeigt:
Finden /Zuhause -atime 60
Sie können das Zeitintervall auch festlegen. Um nach Dateien zu suchen, die vor vier bis zwei Monaten geändert wurden, verwenden wir die Richtlinie:
Finden Sie /Home -mtime +60 -mtime -120
Aber wie man frisch veränderte Dateien findet (vor zwei Stunden):
Finden /Zuhause -cmin 120
Suchen Sie nach Dateien nach Größe
Vermuten, dass jemand eine CD für Filme benutzt? Wir suchen nach Dateien Größe 1.4GB:
Finden Sie 1400 m
Oder verwenden Sie den Bereich:
Finden Sie / -size +1400 m -size -2800m
Suchen Sie nach leeren Dateien/Katalogen
Ja, wundern Sie sich nicht. Die Aufgabe, die Reihenfolge in den Medien wiederherzustellen, ist nicht nur für Android OS charakteristisch. In Linux wird es mit Hilfe einer solchen Richtlinie entschieden:
Finden Sie /var -type f -iefty
Ein Beispiel für Aktionen mit gefundenen Dateien
In Linux kann das Find -Team bestimmte Aktionen mit diesen Dateien rekursiv ausführen, wobei die Suche nach dem Sie durchführen. Um Dateibefehle auszuführen, müssen Sie den Exec -Parameter verwenden. Die Anweisung zum Anzeigen von Informationen über alle Dateien, die mit dem Befehl LS mit dem Befehl LS angezeigt werden, sieht also wie folgt aus:
Finden . -execl ls -l \;
Aber wie einfach Sie temporäre Dateien mit einer bestimmten Maske im Verzeichnis /im Home /Temperatur löschen können:
Find /tmp -Typ f -Name "**.html ”-exec rm -f \;
Für einen Anfänger wird die Verwendung einer Befehlszeile mit einer großen Anzahl von Optionen natürlich eine etwas ausgefeilte Art zu sein, aber unter Linux liegt es in der Reihenfolge der Dinge. Und wie würden Sie die hier in Windows beschriebenen Probleme lösen? Das ist dasselbe. In dieser Hinsicht steht Linux eindeutig voraus.