Extrahieren Sie bestimmte Dateipfade in Ordnern basierend auf Linux-Befehlen

Extrahieren Sie bestimmte Dateipfade in Ordnern basierend auf Linux-Befehlen

In letzter Zeit besteht der Bedarf, automatisch nach bestimmten Dateien in einem bestimmten Ordner zu suchen, und der Dateipfad und der Dateiname müssen separat gespeichert werden. Obwohl dies mithilfe von Pythons Walk erreicht werden kann, fühlt es sich etwas kompliziert an. Daher möchte ich sehen, ob die integrierten Befehle von Linux diese Aufgabe erledigen können.

Umfeld

Die zu durchsuchende Verzeichnisstruktur ist wie folgt

. |____test | |____test2.txt | |____test.py | |____test.txt | |____regex.py |____MongoDB | |____.gitignore | |____cnt_fail.py | |____db

Ziel 1: Alle py-Dateinamen abrufen

Wenn Sie nur find . -name '*.py' zum Suchen verwenden, ist das Ergebnis der Pfad

./test/test.py
./test/regex.py
./MongoDB/cnt_fail.py

Wenn wir nur den Dateinamen benötigen, können wir den von Linux bereitgestellten Befehl basename verwenden

Um alle Suchergebnisse von find mit Basisnamen zu verarbeiten, müssen wir den Parameter -exec von find verwenden.

Der letzte Befehl lautet:

finde . -name '*.py' -exec basename {} \;

Ergebnis:

test.py
regex.py
cnt_fail.py

Die {} werden in Verbindung mit der Option -exec verwendet, um alle Ergebnisse abzugleichen und dann ihre Dateinamen zu extrahieren.

Ziel 2: Alle py-Dateipfade abrufen, Duplikate entfernen und das führende Zeichen "./" löschen

Linux hat auch einen Befehl dirname, um den Dateipfad zu erhalten

Ändern Sie den vorherigen Befehl leicht, um alle Dateipfade anzuzeigen

finde . -name '*.py' -exec dirname {} \;
Suchergebnisse:

./prüfen
./prüfen
./MongoDB

Wir können sehen, dass es doppelte Pfade gibt. Um Duplikate in Linux zu entfernen, können wir sort verwenden und den Parameter -u hinzufügen. Der Parameter -u wird verwendet, um Duplikate in den Sortierergebnissen zu entfernen. Wir müssen die Ausgabe des vorherigen Befehls als Eingabe an sort übergeben und denken dabei natürlich an Pipes.

Der Pipe-Befehlsoperator lautet: |, der nur die korrekten Ausgabeinformationen verarbeiten kann, die vom vorherigen Befehl übermittelt wurden, d. h. die Standardausgabeinformationen.
Eine direkte Weiterverarbeitung der Fehlermeldungen ist nicht möglich. Es wird dann als Standardeingabe an den nächsten Befehl übergeben.

Der Befehl nach dem Hinzufügen von sort lautet

find . -name '*.py' -exec dirname {} \; | sort -u

Die laufenden Ergebnisse sind:

./MongoDB
./prüfen

Zum Schluss löschen wir mit cut das ./ Zeichen vor jedem Pfad. Der Parameter -c3- bedeutet, dass der Teilstring vom dritten Zeichen des Strings (Startposition ist 1) bis zum Ende extrahiert wird. Der abschließende Befehl lautet:

find . -name '*.py' -exec dirname {} \; | sort -u | cut -c3-

Laufergebnisse:

MongoDB
prüfen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Linux-Befehl zum Dekomprimieren eines RPM-Pakets und Einführung in die Verwendung des RPM-Befehls
  • Zusammenfassung von zehn Linux-Befehlsaliasen, die die Effizienz verbessern können
  • Der Unterschied und die Verwendung von Strg+z, Strg+c und Strg+d in Linux-Befehlen
  • Beispielcode eines Linux-Befehls zum Erstellen eines Datumsordners oder einer Datumsdatei
  • So speichern Sie die Befehlsausgabe in einer Datei im Linux-Terminal
  • Die umfassendste Sammlung häufig verwendeter Linux-Befehle (mit Beispielen)

<<:  Übung zum Hochladen von Element-Avataren

>>:  Zusammenfassung der gemeinsamen Updatemethode für MySQL-Updates mehrerer Tabellen

Artikel empfehlen

So ändern Sie Flash-SWF-Dateien in Webseiten

Ich denke, dies ist ein Problem, auf das viele Leu...

jQuery manipuliert Cookies

Code kopieren Der Code lautet wie folgt: jQuery.c...

Empfehlen Sie einen coolen blinkenden Alarmknopf

Die Wirkung ist wie folgt: Der Code lautet wie fo...

Eine detaillierte Erklärung, wie React Fiber funktioniert

Inhaltsverzeichnis Was ist React Fiber? Warum Rea...

Erstellen Sie mit PS in zwei Minuten eine Homepage für eine XHTML+CSS-Website

Es gibt zu viele Artikel über Webstandards zur We...

Tutorial zur Installation von MySQL 5.7.9 mit RPM-Paket unter CentOS 7

Aufgezeichnetes MySQL 5.7.9-Installationstutorial...

Detaillierte Erklärung der Überwachungseigenschaften von Vue

Inhaltsverzeichnis Vue-Monitoreigenschaften Was i...

Docker-Image erstellen Dockerfile und Commit-Operationen

Erstellen des Images Es gibt zwei Hauptmethoden z...

Webdesign muss auch zunächst eine umfassende Bildpositionierung der Website haben

⑴ Der Inhalt bestimmt die Form. Reichern Sie zuers...

Lösungen für Dateien/Ordner, die unter Linux nicht gelöscht werden können

Vorwort Kürzlich wurde unser Server von Hackern a...