3 Möglichkeiten zum Löschen aller Dateien in einem Verzeichnis mit Ausnahme eines oder wenigen Dateien mit Erweiterungen
- 4063
- 781
- Tom Jakobs
Manchmal befassen Sie sich in eine Situation, in der Sie alle Dateien in einem Verzeichnis löschen oder einfach ein Verzeichnis aufräumen müssen, indem Sie alle Dateien mit Ausnahme eines bestimmten Typs entfernen (endet mit einer bestimmten Erweiterung).
In diesem Artikel zeigen wir Ihnen, wie Sie Dateien in einem Verzeichnis außer bestimmten Dateierweiterungen oder -Typen verwenden rm, finden Und Globignore Befehle.
Bevor wir uns weiter bewegen, beginnen wir, wenn wir uns kurz ein wichtiges Konzept unter Linux -Dateiname -Muster -Matching ansehen, das es uns ermöglicht, mit unserem zur Hand zu gehen.
Vorgeschlagene Lesen: Verwenden Sie den Befehl Find, um mehrere Dateinamen/Erweiterungen unter Linux zu durchsuchen
In Linux ist ein Shell -Muster eine Zeichenfolge, die aus den folgenden Sonderzeichen besteht, die als als bezeichnet werden Wildcards oder Metacharaccters:
*
- entspricht null oder mehr Zeichen?
- entspricht jedem einzelnen Charakter[SEQ]
- entspricht jedem Charakter in seq[!SEQ]
- entspricht einem Charakter, der nicht in seq
Es gibt drei mögliche Methoden, die wir hier untersuchen werden. Dazu gehören:
Löschen Sie Dateien mithilfe erweiterter Musteranpassungsoperatoren
Die unterschiedlichen erweiterten Muster -Matching -Operatoren sind unten aufgeführt, wo Musterliste ist eine Liste mit einem oder mehreren Dateinamen, die mit dem getrennt sind |
Charakter:
*(Musterliste)
- entspricht null oder mehr Vorkommen der angegebenen Muster?(Musterliste)
- entspricht Null oder einem Auftreten der angegebenen Muster- +(Musterliste) - entspricht einem oder mehreren Vorkommen der angegebenen Muster
@(Musterliste)
- entspricht einem der angegebenen Muster!(Musterliste)
- übereinstimmt alles außer einem der angegebenen Muster
Um sie zu verwenden, aktivieren Sie die extglob Shell -Option wie folgt:
# Shopt -s extglob
1. Um alle Dateien in einem Verzeichnis außer Dateiname zu löschen, geben Sie den folgenden Befehl ein:
$ rm -v !("Dateinamen")Löschen Sie alle Dateien mit Ausnahme einer Datei unter Linux
2. So löschen Sie alle Dateien mit Ausnahme von Dateiname1 Und Dateiname2:
$ rm -v !("Dateiname1" | "Dateiname2")Löschen Sie alle Dateien außer wenigen Dateien unter Linux
3. Das folgende Beispiel zeigt, wie Sie alle anderen Dateien als alle entfernen .Reißverschluss
Dateien interaktiv:
$ rm -i !(*.Reißverschluss)Löschen Sie alle Dateien mit Ausnahme von ZIP -Dateien unter Linux
4. Als nächstes können Sie alle Dateien in einem Verzeichnis abgesehen von allen löschen .Reißverschluss
Und .ODT
Dateien wie folgt, während angezeigt wird, was getan wird:
$ rm -v !(*.ZIP |*.ODT)Löschen Sie alle Dateien mit Ausnahme bestimmter Dateierweiterungen
Sobald Sie alle erforderlichen Befehle haben, schalten Sie das aus extglob Shell -Option wie so:
$ Shopt -u extglob
Löschen Sie Dateien mit dem Befehl Linux Finden Sie den Befehl
Nach dieser Methode können wir den Befehl Find ausschließlich mit geeigneten Optionen oder in Verbindung mit verwenden Xargs Befehl durch Verwendung einer Pipeline wie in den folgenden Formularen:
$ find / verzeichnis / -typ f -not -name 'muster' -delete $ find / Verzeichnis / -typ f -not -name 'Muster' -print0 | xargs -0 -i rm $ find / directory / -type f -not -name 'muster' -print0 | xargs -0 -i rm [Optionen]
5. Der folgende Befehl löscht alle Dateien abgesehen von .gz
Dateien im aktuellen Verzeichnis:
$ find . -Typ f -not -name '*.gz'-deleteBefehl Finden - Entfernen Sie alle Dateien außer .GZ -Dateien
6. Verwendung einer Pipeline Und Xargs, Sie können den obigen Fall wie folgt ändern:
$ find . -Typ f -not -name '*gz' -print0 | xargs -0 -i rm -vEntfernen Sie Dateien mit den Befehlen mit Find- und Xargs
7. Sehen wir uns ein zusätzliches Beispiel an .gz
, .ODT
, Und .JPG
Dateien im aktuellen Verzeichnis:
$ find . -Typ f -not \ ( -name '*gz' -or -name '*odt' -or -name '*.JPG '\) -DeleteEntfernen Sie alle Dateien mit Ausnahme von Dateierweiterungen
Löschen Sie Dateien mithilfe der Bash Globignore -Variablen
Dieser letzte Ansatz funktioniert jedoch nur mit Bash. Hier das Globignore Variable speichert eine dicker getrennte Musterliste (Dateinamen), die durch die Pathname-Expansion ignoriert werden soll.
Vorgeschlagene Lesen: Nützliche 12 praktische Beispiele zum GREP -Befehl unter Linux
Um diese Methode anzuwenden, gehen Sie in das Verzeichnis, das Sie aufräumen möchten Globignore Variable wie folgt:
$ cd test $ globignore =*.ODT:*.ISO:*.txt
In diesem Fall alle anderen Dateien als .ODT
, .ISO
, Und .txt
Dateien mit dem aktuellen Verzeichnis entfernt werden.
Führen Sie nun den Befehl aus, um das Verzeichnis aufzuräumen:
$ rm -v *
Danach ausschalten Globignore Variable:
$ unbegrenzter GlobignoreLöschen Sie Dateien mithilfe der Bash Globignore -Variablen
Notiz: Um die Bedeutung der in den obigen Befehlen verwendeten Flags zu verstehen.
Das ist alles! Wenn Sie andere Befehlszeilen -Techniken für denselben Zweck im Auge haben, vergessen Sie nicht, uns über unseren Feedback -Abschnitt unten mit uns zu teilen.
- « PHOTOREC - Löschte oder verlorene Dateien unter Linux wiederherstellen
- Tecmint.com - am meisten angesehene Artikel von 2016 »