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

MySQL 8.0.11 Installationshandbuch für Mac

MAC installiert mysql8.0, der spezifische Inhalt ...

Detaillierte Erklärung der Schritte zum Erstellen eines Webservers mit node.js

Vorwort Es ist sehr einfach, einen Server in node...

js, um einen einfachen Taschenrechner zu erstellen

In diesem Artikel finden Sie den spezifischen Cod...

So verwenden Sie die Vue3-Komponente zum asynchronen Laden von Daten Suspense

Inhaltsverzeichnis Vorwort Komponenten erstellen ...

So erstellen Sie Ihren eigenen privaten Nexus-Server unter Linux

Dieser Artikel beschreibt, wie man über Docker ei...

Fallstudie zu den SQL ROW_NUMBER()- und OVER()-Methoden

Syntaxformat: row_number() über (Partition durch ...

Eine Untersuchung des JS-Operators im Problem

Die Sache ist: Jeder kennt „Speicherlecks“. Es gi...

Tutorial zur Installation von Nginx in einer Linux-Umgebung

Inhaltsverzeichnis 1. Installieren Sie die erford...