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 erstellen Sie Benutzer und verwalten Berechtigungen in MySQL

1. So erstellen Sie einen Benutzer und ein Passwo...

HTML-Auszeichnungssprache - Formular

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Diskussion zum Problem verstümmelter Zeichen in Iframe-Seitenparametern

Ich bin auf ein sehr ungewöhnliches Problem mit ve...

Detaillierte Erläuterung des Datenproxys und der Ereignisse von VUE

Inhaltsverzeichnis Überprüfung der Object.defineP...

MySQL-Datenbanktabelle und Datenbankpartitionierungsstrategie

Lassen Sie uns zunächst darüber sprechen, warum w...

So verwenden Sie fdisk zum Partitionieren der Festplatte in Linux

Häufig verwendete Befehle für Linux-Partitionen: ...

Beheben Sie den abnormalen Fehler beim Erstellen einer Vue-Umgebung mit Webpack

Inhaltsverzeichnis Konfigurieren Sie zuerst packa...

XHTML-Erste-Schritte-Tutorial: Verwenden des Frame-Tags

<br />Durch die Frame-Struktur ist die gleic...

Detaillierte Erklärung der Filter und Anweisungen in Vue

Inhaltsverzeichnis benutzerdefinierte Vue-Direkti...