it-swarm.com.de

Wie lösche ich alle Dateien mit einer bestimmten Endung aus einem Ordner und allen Unterordnern?

Ich möchte alle JPG-Dateien aus meinem Musikordner entfernen, um Speicherplatz zu sparen. Mein Musikordner enthält Unterordner, und ich möchte wissen, ob es einen Befehl zum Entfernen aller JPG-Dateien aus all diesen Ordnern gibt, unabhängig von ihrer Ebene. Danke für Ihre Hilfe!

18
Tigull

Eine schnelle und saubere Lösung für die Kommandozeile wäre

cd <dir>
find . -type f -iname \*.jpg -delete
  • . weist an, die Suche im aktuellen Ordner zu starten.
  • -type f weist find an, nur nach Dateien zu suchen.
  • Durch -iname wird die Groß-/Kleinschreibung der Suche nicht berücksichtigt.
  • -delete weist find an, alle gefundenen Dateien zu löschen/entfernen.

ACHTUNG! Ich empfehle, zuerst den Befehl ohne -delete auszuführen, um eine Liste der Dateien zu erhalten, die entfernt werden, wenn -delete im Befehl enthalten ist. Auf diese Weise löscht ein kleiner Tippfehler nichts, was Sie nicht beabsichtigt haben.

Weitere Informationen zur Verwendung von find und zu den möglichen Aktionen finden Sie unter man find.

Beachten Sie, dass find keine Ausgabe erzeugt, wenn -delete verwendet wird.

In Bezug auf den Kommentar zu mehreren Erweiterungen

find . -type f \( -name \*jpg -o -name \*png \) -delete

  • ( .. ) Gruppenausdruck. Muss aus der Shell entfernt werden, daher \( .. \) im Beispiel
  • -o logisch oder

Das obige Beispiel stimmt also mit jeder Datei überein, die am Ende des Namens entweder jpg oder png enthält. Weitere Erweiterungen können auf die gleiche Weise hinzugefügt werden. Denken Sie daran, zwischen den einzelnen -o-Anweisungen jeweils einen -name-Code einzufügen, wenn -o nicht angegeben ist. Bei find wird standardmäßig -a (und) verwendet, da eine Datei nicht gleichzeitig in jpg und png __ __ __ enden kann.

60
Zoke

Das sollte es tun

Sudo rm -rf -d ~/Music/*.JPG

dadurch werden alle JPG-Dateien im Musikordner entfernt.

6
Ringtail

Bashs shopt -s globstar kann hier für rekursives Globbing nützlich sein:

bash-4.3$ tree
.
├── 10.jpg
└── subfolder
    ├── 5.jpg
    └── another_subfolder
        └── 15.jpg

2 directories, 3 files
bash-4.3$ shopt -s globstar
bash-4.3$ rm ./**/*.jpg
bash-4.3$ tree
.
└── subfolder
    └── another_subfolder
0