GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So löschen Sie Dateien, die in einer anderen Datei unter Linux aufgeführt sind

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.


Linux
  1. So konvertieren Sie Dateien in UTF-8-Codierung unter Linux

  2. So löschen Sie Dateien und Verzeichnisse in Linux über die Befehlszeile

  3. So zeigen oder ändern Sie die ACL in Linux-Dateien

  4. Wie löschen Sie Dateien, die älter als ein bestimmtes Datum in Linux sind?

  5. Wie lösche ich .fuse_hidden*-Dateien?

So kürzen Sie (leere) Dateien in Linux

So benennen Sie eine Datei (en) in Linux um

So entpacken Sie die gz-Dateien unter Linux

So finden Sie Dateien basierend auf dem Zeitstempel in Linux

So entfernen/löschen Sie Dateien in Linux mit dem Befehl rm

So komprimieren Sie eine Datei unter Linux