Löschen Sie Dateien und Ordner mit bestimmten Namen aus einem bestimmten Verzeichnis

Löschen Sie Dateien und Ordner mit bestimmten Namen aus einem bestimmten Verzeichnis

Ich habe einen Ordner, /home/userA/folderAder viele Dateien, Ordner und Unterordner enthält. Ich möchte alle Dateien löschen, die bestimmte Namen haben data.txtund glass.txt… Außerdem möchte ich alle Ordner matchmit 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

verwandte Informationen