Grep und Find -Operatorenregeln für Linux

Grep und Find -Operatorenregeln für Linux

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.