Ich habe einen Ordner, /home/userA/folderA
der viele Dateien, Ordner und Unterordner enthält. Ich möchte alle Dateien löschen, die bestimmte Namen haben data.txt
und glass.txt
… Außerdem möchte ich alle Ordner match
mit dem Namen und ihrem gesamten Inhalt löschen. Ich wäre für jeden Rat dankbar, wie das geht.
Antwort1
Sie können die Dateien und Ordner in den Unterverzeichnissen von löschen folderA
.
Um die Dateien zu entfernen, führen Sie Folgendes aus:
find /home/userA/folderA/* -type f \( -name "data.txt" -or -name "glass.txt" \) -delete
und um die Ordner zu entfernen match
:
find /home/userA/folderA/* -depth -name "match" -type d -exec rm -rf "{}" \;
Antwort2
Und die ausführliche (Python-)Option:
#!/usr/bin/env python3
import os
import shutil
# --------------------------------------------------------
reorg_dir = "/path/to/your/folder"
remove_files = ("data.txt", "glass.txt")
remove_dirs = ("match")
# ---------------------------------------------------------
for root, dirs, files in os.walk(reorg_dir):
for name in files:
if name in remove_files:
os.remove(root+"/"+name)
for dr in dirs:
if dr in remove_dirs:
shutil.rmtree(root+"/"+dr)
Kopieren Sie das Skript in eine leere Datei, legen Sie das Verzeichnis fest und bearbeiten Sie bei Bedarf die Liste der zu entfernenden Dateien und Ordner, speichern Sie es als reorg.py und führen Sie es mit dem folgenden Befehl aus:
python3 /path/to/reorg.py
Antwort3
Sie können einfach den folgenden Befehl ausführen (seien Sie vorsichtig und überprüfen Sie alles doppelt, da dieser Befehl nicht rückgängig gemacht werden kann!). Dadurch werden alle TXT-Dateien gelöscht, die die Wörter „data“ oder „glass“ enthalten.
sudo rm -rf /home/userA/folderA/*data*.txt
sudo rm -rf /home/userA/folderA/*glass*.txt
Sie können jeden Ordner mit dem Namen „match“ mit dem Befehl „locate“ finden:
locate match
Sobald Sie die Pfade gefunden haben, führen Sie einfach den obigen Befehl für den gesamten Ordner aus
sudo rm -rf /path/to/match
Beste Grüße, Lev