Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Linux Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Zu den grundlegenden Aufgaben der Dateisystemverwaltung gehört das Erstellen, Ändern und Löschen verschiedener Arten von Dateien und Verzeichnissen. Die Kenntnis einiger grundlegender Tools und Konzepte für das Löschen von Dateien ist sehr nützlich und kann Ihnen Zeit sparen.

Linux bietet mehrere Tools, die uns bei der Entfernung von Dateien helfen können. Oft müssen wir nicht nur eine einzelne, sondern eine ganze Reihe von Dateien und Verzeichnissen anhand bestimmter Kriterien löschen. Es ist hilfreich, ein paar gängige Befehle und ihre Kombinationen zu kennen, um unsere Aufgabe leicht zu erledigen

  • Verwenden Sie die folgenden Befehle mit Vorsicht, insbesondere diejenigen, die reguläre Ausdrücke oder bestimmte Suchmuster mit dem Befehl finden verwenden. Ein falscher Ausdruck oder ein falsches Muster kann wichtige Daten/Systemdateien oder einfach nicht beabsichtigte Dateien löschen.
  • Erstellen Sie immer ein aktuelles Backup Ihrer wichtigen Daten und Systemdateien.
  • Seien Sie vorsichtig, bevor Sie solche Befehle ausführen, insbesondere wenn Sie sie mit Sudo oder als Superuser (root) ausführen.

Entfernen mit unlink

Nicht so populär. Um eine einzelne Datei dauerhaft zu entfernen, können wir den Befehl unlink verwenden

$ unlink {Datei-Name}

Einzelne Datei entfernen

Es gibt einen häufiger verwendeten Befehl zum Entfernen von Dateien, nämlich den Befehl rm, mit dem Sie eine oder mehrere Dateien gleichzeitig entfernen können

$ rm {Datei-Name}

rm fordert Sie bei Dateien, die schreibgeschützt sind, auf, das Löschen zu bestätigen, andernfalls wird die Datei direkt gelöscht. Wenn Sie möchten, dass rm vor dem Löschen einer Datei immer nachgefragt, verwenden Sie die Option -i

$ rm -i {Dateiname}

der Befehl rm löscht die Datei, ohne eine Meldung auf dem Bildschirm auszugeben. Um aufzulisten, was der Befehl rm tatsächlich tut, verwenden Sie mit der Option rm -v

$ rm -v {Datei-Name}

Um schreibgeschützte Dateien zu löschen, ohne eine Bestätigung zu verlangen, verwenden Sie das Flag -f

$ rm -f {Datei-Name}

Mehrere Dateien entfernen

Sie können mehrere Dateien entfernen, indem Sie mehrere Dateinamen als Argumente für rm angeben.

$ rm {Datei-Name-1} {Datei-Name-2} {Datei-Name-3} ... {Dateiname-N}

rm unterstützt auch reguläre Ausdrücke. Wenn Sie alle Dateien mit dem Namen Dateiname-* löschen möchten, können Sie Folgendes verwenden

$ rm Dateiname-*

Wir können auch mehrere Dateien mit regulären Ausdrücken angeben. Wenn wir drei Dateien löschen wollen, die mit Dateiname-1, Dateiname-2 und Dateiname-3 übereinstimmen, können wir etwas wie folgt verwenden

$ rm datei-name-[123]

Verzeichnis entfernen

Ein leeres Verzeichnis kann mit dem Befehl rm mit der Option -d gelöscht werden

$ rm -d {dir-name}

Die für das Entfernen von Dateien unterstützten Optionen können auch mit dem Entfernen von Verzeichnissen kombiniert werden, indem Sie die Option -d verwenden. Zum Beispiel

$ rm -idv {dir-name}

Um ein Verzeichnis zu löschen, das nicht leer ist, verwenden Sie das Flag -r

$ rm -r {dir-name}

Wenn Sie vor dem Löschen des Verzeichnisses und seines Inhalts keine Eingabeaufforderung wünschen, verwenden Sie die Flagge -rf. Dadurch wird alles innerhalb des Verzeichnisses gelöscht, einschließlich des Verzeichnisses selbst, ohne dass eine Bestätigung erfolgt. Seien Sie vorsichtig, wenn Sie diese Option verwenden, insbesondere als root

$ rm -rf {dir-name}

Dateien finden und entfernen

Für komplexere Anforderungen können wir den Befehl finden mit verschiedenen Optionen verwenden. Um alle Dateien zu entfernen, die dem Muster {pattern} innerhalb eines Pfades entsprechen, der durch {dir-to-search}angegeben ist

$ find {Verzeichnis-zu-Suche} -type f -name {Muster} -exec rm -f {}

\

Beispiel

$ find /var/tmp -type f -name "*.tmp" -exec rm -f {}

\

Wenn wir alles entfernen wollen, was mit dem Muster {pattern} übereinstimmen, einschließlich der Verzeichnisse innerhalb von {dir-to-search}, können wir den obigen Befehl leicht abändern

$ find {Verzeichnis-zu-suchen} -name {Muster} -exec rm -rf {}

\

Moderne Versionen des Befehls finden unterstützen intern die Funktion löschen. Hier ersetzt das Flag -delete den Befehl rm, während -depth den Befehl finden anweist, zuerst den Inhalt des Verzeichnisses und dann das Verzeichnis selbst zu verarbeiten

$ find {Verzeichnis-zu-suchen}

typ f -name {Datei-Namen-Muster} -tiefe -löschen

Das obige Beispiel ist effizienter, wenn Sie mit einer großen Anzahl von Dateien arbeiten, da nicht für jede gefundene Datei ein neuer externer Prozess für den Befehl rm gestartet wird. Allerdings unterstützen (noch) nicht alle Versionen des Befehls find die Flagge -delete. Als Alternative können wir den Befehl xargs mit find verwenden, wie im folgenden Beispiel gezeigt

$ find {Verzeichnis-zu-suchen}

typ f -name {Muster} -print0 | xargs -0 rm

Oder verwenden Sie den Terminator des exec-Befehls, um alles, was der find-Befehl gefunden hat, wie xargs zu verketten

$ find {Verzeichnis-zu-suchen} 

name {Muster} -exec rm -rf {} 

Standardmäßig verwendet der find-Befehl das Flag -print, das wir in der Regel nicht ausgeben. Bei xargs müssen wir den Zeilenumbruch zwischen den einzelnen Dateinamen vermeiden. Daher zeigt die Flagge -print0 finden Sie nach jedem gefundenen Dateinamen ein Null-Zeichen Ausgeben

In ähnlicher Weise geben wir -0 bei xargs an, damit beide Befehle zusammenpassen. Der Befehl rm löscht hier die Datei, an die über die Pipeline eingegebene find übergeben wurde. Der folgende Befehl sucht und löscht zum Beispiel alle *.tmp-Dateien im Home-Verzeichnis des aktuellen Benutzers (angegeben durch das Symbol ~ )

$ find ~ -name "*.tmp" -print0 | xargs -0 rm

der find-Befehl bietet mehrere Möglichkeiten, Dateien und Verzeichnisse zu durchsuchen, darunter Eigentümer, Berechtigung, Zeitstempel usw. Im Folgenden werden wir einige dieser Möglichkeiten vorstellen, die uns bei bestimmten Aufgaben zum Entfernen von Dateien helfen können

Suchen und Entfernen von Dateien nach einem Benutzer

Um alles innerhalb eines bestimmten Verzeichnisses zu löschen, das einem bestimmten Benutzer gehört, verwenden Sie

$ find {dir-to-search}

mindepth 1 -Benutzer {Benutzername} -delete

Im obigen Beispiel verhindert das Flag -mindepth mit dem Wert 1, dass das durch {dir-to-search} angegebene Verzeichnis gelöscht wird, wenn es dem Suchmuster und den Kriterien entspricht. Oder um alles innerhalb eines bestimmten Verzeichnisses zu löschen, das zu einem bestimmten Gruppe gehört, verwenden Sie

$ find {dir-to-search}

mindepth 1 -group {group-name} -delete

Wenn Sie die Unterverzeichnisse unter dem Suchpfad nicht durchsuchen möchten, haben Sie auch die Möglichkeit, -maxdepth mit dem entsprechenden Wert für die Verzeichnistiefe zu verwenden

Hier ist ein Beispiel

$ find tempdir/ -mindepth 1 -maxdepth 1 -user abhisheknair -group abhisheknair -delete

Wenn Sie stattdessen die Benutzer- und Gruppennummern angeben möchten, können Sie etwas wie folgt versuchen

$ find {dir-to-search}

mindepth 1 -uid {user-id} -gid {group-id} -delete

Leere Verzeichnisse finden und entfernen

Um alle leeren Verzeichnisse innerhalb eines bestimmten Pfades {dir-to-search} zu löschen, können Sie Folgendes verwenden

$ find {Verzeichnis-zu-Suche}

typ d -leer -löschen

Um stattdessen alle leeren Dateien innerhalb eines bestimmten Pfades {dir-to-search} zu löschen, verwenden Sie

$ find {Verzeichnis-zu-Suche}

typ f -leer -löschen

Suchen und Löschen von Dateien, die älter als X sind

Manchmal müssen Sie Dateien löschen, die älter als x Tage sind. find hat Optionen, um die Erstellungszeit(ctime), sterbenZugriffszeit (atime) und die Änderungszeit(mtime) einer Datei zu lesen. Wir können die Option mtime mit find verwenden, um Dateien zu finden und zu löschen, die vor mehr als x Tage wurden geändert

$ find {Verzeichnis-zu-suchen}

type f -mtime {X} -delete

Um beispielsweise alle Dateien mit der Endung log in /var/tmp zu löschen, deren Änderungszeit 30 Tage oder länger zurückliegt, können Sie Folgendes verwenden

$ find /var/tmp -name "*.log" -type f -mtime 30 -delete

Dateien nach Berechtigung suchen und löschen

Jetzt können wir auch Dateien auf der Grundlage einer bestimmten Berechtigung löschen, z.B.

$ find {dir-to-search}

name {Muster} -perm {NNN} -löschen

Beispiel

$ find /var/tmp -name "temp*" -perm 755 -delete

Oder wenn wir eine symbolische Form für die Berechtigung verwenden wollen, benutzen Sie

$ find {dir-to-search} -name {Muster} -perm u={rwx},g={rwx},o={rwx}

löschen

Beispiel

$ find /var/tmp -name "temp*" -perm u=rwx,g=rw,o=rw -delete

Resümee

Linux bietet die Befehle unlink, rm und rmdir, die einfach sind und mit regulären Ausdrücken leicht erweitert werden können. Für fortgeschrittene Anforderungen haben Sie die Möglichkeit, eine Kombination von Tools wie find und xargs zu verwenden, um das zu erreichen, was Sie brauchen. Abgesehen von den Beispielen in diesem Artikel haben Sie die Möglichkeit, find mit jeder seiner verfügbaren Flaggen zu verwenden, um Ihre Suche anzupassen. Lesen Sie die man-Seiten der jeweiligen Befehle, um mehr darüber zu erfahren

Führen Sie find-Befehle immer ohne rm- oder -delete-Flag aus und analysieren Sie die Ausgabe, um herauszufinden, welche Dateien oder Verzeichnisse von der Ausführung eines bestimmten Befehls betroffen sein werden. Eine ordnungsgemäße Backup-Konfiguration und -Richtlinie hilft nicht nur bei versehentlichen Löschungen, sondern auch bei Hardwareausfällen und Cyber-Attacken.

  • Abhishek Nair
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zu Linux
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder