Unter einer Linux-Betriebssystem-Distribution ist alles erlaubt. Solche Open-Source-Betriebssystemumgebungen führen Sie bei allem, was es über Betriebssysteme zu wissen gibt, durch eine Achterbahnfahrt.
Ein Schlüsselaspekt, der den Bedarf und den anhaltenden Bedarf an einem Betriebssystem stark definiert, ist die Dateiverwaltung. Kein Betriebssystem handhabt die Dateiverwaltung besser als Linux. Unabhängig davon, ob Sie die Sicherheit Ihres Systems und Ihrer Benutzerdateien einschränken, erstellen oder verbessern möchten, Linux bietet die beste Benutzererfahrung und Leistung.
Das Linux-Terminal oder die Befehlszeilenschnittstelle ist eine flexible Umgebung zum Bearbeiten von Dateien durch Befehle zum Erstellen, Umbenennen, Verschieben und Löschen von Dateien. Was wäre, wenn Sie eine weitere Optimierung zur Dateimanipulation lernen würden?
Dieser Artikel führt uns durch das Löschen von Dateien, die in einer anderen Datei in einer Linux-Betriebssystemumgebung aufgelistet sind.
Praxisszenario
Wir werden einen Dummy-Verzeichnisbaum als Referenz erstellen. Betrachten Sie die folgende Verzeichnisbaumstruktur:
$ tree

Aus der obigen Bildschirmaufnahme, TestDel ist das übergeordnete Verzeichnis mit dem absoluten Pfad /home/dnyce/TestDel .
$ pwd

Der TestDel Verzeichnis hat vier weitere Verzeichnisse (docx_files , jpg_file , pdf_file und xml_files ) darin gefüllt mit Dateien in verschiedenen Formaten (docx, jpg, pdf und xml).
Wenn wir nun einige dieser Dateien löschen möchten, müssen wir zuerst ihren absoluten Pfad in einer Datei auflisten. Wir erstellen eine Textdatei namens tobeDeleted.txt und fügen Sie den Pfad zu einigen dieser Dateien hinzu.
$ sudo nano tobeDeleted.txt

Nachdem wir nun die Datei haben, aus der die aufgelisteten Dateien gelöscht werden, können wir uns jetzt die praktikablen Methoden ansehen, die ihre Löschung einleiten und ausführen.
Methode 1:Verwendung des xargs-Befehls
Unter den xargs Ansatz, Eingaben von stdin werden von den xargs gelesen Befehl und dann konvertiert, um Argumente zu verwenden, die mit anderen Befehlen verknüpft werden können.
Zum Löschen der oben aufgeführten Dateien tobeDeleted.txt -Datei werden wir die xargs implementieren und ausführen Befehl auf folgende Weise. Die xargs sollte auf den absoluten Pfad der tobeDeleted.txt verweisen Textdatei.
$ xargs -I{} rm -r "{}" < /home/dnyce/tobeDeleted.txt
Der Befehl liest den absoluten Pfad der aufgelisteten Dateien und überprüft dann ihren tatsächlichen Speicherort, damit der Löschvorgang beginnen kann.
Der Platzhalter "{}"
setzt die aufgelisteten Dateinamenspfade für rm -r
in Anführungszeichen Befehl zum Löschen nach -I
ersetzt die Zeichenfolge durch den nächsten zu löschenden Dateinamenpfad.
Wir können jetzt fortfahren und den Baumbefehl ausführen, um sicherzugehen, dass die aufgelisteten Dateien tatsächlich gelöscht wurden, mit der folgenden Ausgabe des cat-Befehls als Bezugspunkt.
$ cat tobeDeleted.txt

$ tree /home/dnyce/TestDel

Wie Sie sehen können, sind von den ursprünglich 13 Dateien noch 10 Dateien übrig.
Methode 2:Verwendung des sed-Befehls
Der kompakte einzeilige Ansatz von sed hilft uns leicht, Dateien zu löschen, die in einer anderen Datei aufgeführt sind. Aktualisieren Sie tobeDeleted.txt mit Neueinsteigern.
$ sudo nano tobeDeleted.txt

Der sed Befehl zum Löschen der Dateien, die in der obigen Bildschirmaufnahme angezeigt werden, sieht wie folgt aus:
$ sed 's/.*/rm -r "\0"/' /home/dnyce/tobeDeleted.txt

Der Platzhalter "\0"
zeigt auf den Dateinamenspfad zum Löschen durch rm -r
Befehl, wobei s
behandelt die Dateipfade als separate Einträge in der Liste mit unterschiedlichen Dateierweiterungen (.*)
.
Wie Sie vielleicht bemerkt haben, ist der sed command übernimmt nicht die eigentliche Dateilöschung für uns, sondern generiert die entsprechenden Löschbefehle, die wir bequem ausführen können.

Führen Sie den Baum erneut aus Befehl, um sicherzustellen, dass die Dateien mit dem cat-Befehl gelöscht werden als Bezugspunkt ausgegeben.
$ cat /home/dnyce/tobeDeleted.txt

$ tree /home/dnyce/TestDel

Wir haben es geschafft, die aufgelisteten Dateien zu löschen.
Methode 3:Verwenden des awk-Befehls
Aktualisieren Sie erneut die tobeDeleted.txt Datei mit Neuzugängen.
$ sudo nano tobeDeleted.txt

Das awk Der auszuführende Befehl lautet wie folgt:
$ awk -v q='"' '$0 = "rm -r " q $0 q' /home/dnyce/tobeDeleted.txt

Das -v
weist die Variable q
zu mit Platzhalterwert "
und '$0 = "rm -r " q $0 q'
generiert den resultierenden Befehl zum Löschen jeder der aufgelisteten Dateien.
Wie bereits erwähnt, ist das awk Der Befehl führt nicht auch das eigentliche Löschen der aufgelisteten Dateien für uns durch, sondern generiert die Befehle, die wir verwenden können:

Führen Sie den Baum aus Befehl in Bezug auf den cat-Befehl Ausgabe, um das Löschen der Dateien zu bestätigen.
$ cat /home/dnyce/tobeDeleted.txt

$ tree /home/dnyce/TestDel

Sie haben Ihren Linux-Dateiverwaltungsroutinen erfolgreich einen neuen Skill hinzugefügt.