GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So entfernen Sie Dateien und Verzeichnisse unter Linux

Dieser Artikel setzt eine Reihe von Artikeln über die Linux-Shell fort und behandelt die drei nützlichsten Methoden zum Löschen von Dateien und Verzeichnissen. Wir haben auch Ausnahmefälle behandelt, wie das Löschen von Verzeichnissen mit einer großen Anzahl von Dateien darin, das Löschen von Dateien oder Verzeichnissen mit Sonderzeichen in ihren Namen. Verbessern Sie Ihre Linux-Kenntnisse in nur 5 Minuten.

„rmdir“-Befehl

Bevor Sie das rmdir verwenden müssen Sie wissen, dass Sie gelöschte Objekte nicht so einfach wiederherstellen können.

Öffnen Sie jetzt das Befehlszeilenterminal, wenn Sie Linux oder macOS verwenden. Wenn Sie Windows verwenden, können Sie das Windows-Subsystem für Linux (WSL) verwenden.

Bevor wir das Verzeichnis löschen, erstellen wir es zuerst:

$ mkdir /tmp/docs

Löschen wir es jetzt unter dem Namen /tmp/docs mit dem folgenden Befehl:

$ rmdir /tmp/docs

rmdir ist ein Befehl zum Entfernen leerer Verzeichnisse. Es ist sehr nützlich, da Sie davor geschützt sind, etwas Wichtiges aus Ihrem Dateisystem zu löschen.

Lassen Sie uns dieses Verhalten validieren, indem wir eine Datei in einem Verzeichnis ablegen, das wir löschen möchten:

$ mkdir -p /tmp/docs

$ touch /tmp/docs/my_file

$ tree /tmp/docs

/tmp/docs
└── my_file

0 directories, 1 file

Wenn Ihr Verzeichnis nicht leer ist, erhalten Sie die folgende Fehlermeldung:

$ rmdir /tmp/docs
rmdir: /tmp/docs: Directory not empty

Um das Verzeichnis zu löschen, das Dateien enthält, müssen Sie die rm verwenden Befehl:

$ rm -rf /tmp/docs

Löschen mehrerer Verzeichnisse mit Wildcard

Alle Konsolenbefehle in Linux können Dateien und Ordner mit Platzhaltern (*) im Datei- oder Ordnernamen verarbeiten. Lassen Sie uns die folgende Ordnerstruktur löschen:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
└── dir3

3 directories, 0 files

Um alle Verzeichnisse zu löschen, die mit dir beginnen wir müssen den folgenden Befehl verwenden:

$ rmdir /tmp/docs/dir*

Hier ist das erwartete Ergebnis:

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

„rm“-Befehl

Der rm Der Befehl ist ein Allzweckbefehl, der nicht nur Verzeichnisse, sondern auch Dateien löschen kann. Aber das Standardverhalten von rm Der Befehl erlaubt Ihnen nicht, Ordner zu löschen. Sie können -r verwenden oder -R Argumente zum Löschen von Verzeichnissen, einschließlich der Unterverzeichnisse.

Stellen wir uns vor, wir haben die folgende Dateisystemstruktur:

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

Wenn Sie die Datei /tmp/docs löschen möchten Verzeichnis vollständig, verwenden Sie den folgenden Befehl:

$ rm -rf /tmp/docs

Wo:

  • -r – ein Versuch, alle Unterverzeichnisse aus einem bestimmten Verzeichnis zu entfernen.
  • -f – ein Versuch, die Dateien ohne vorherige Bestätigung oder Genehmigung zu entfernen.

/bin/rm:Argumentliste zu lang

Möglicherweise erhalten Sie diese Fehlermeldung, wenn Sie versuchen, ein Verzeichnis mit vielen Dateien zu löschen. Dieser Fehler tritt auf, weil die Anzahl der Dateien, die dem rm bereitgestellt werden Befehl ist größer als die Systemgrenze für die Größe des Befehlszeilenarguments.

Der einfachste Weg, einen solchen Ordner zu löschen, ist die Verwendung von Suchen Befehl, zuerst alle Dateien zu löschen und dann das Verzeichnis selbst zu löschen:

$ find /tmp/docs -type f -delete

$ rm -r /tmp/docs

Hier:

  • /tmp/docs – Suchverzeichnis.
  • -tippe f – weist das Find-Dienstprogramm an, nur Dateien zu durchsuchen.
  • -löschen – weist das Find-Dienstprogramm an, gefundene Ergebnisse zu löschen.

Sie können auch einen leeren Ordner erstellen und rsync verwenden Dienstprogramm:

$ mkdir empty_dir

$ rsync -a --delete empty_dir/ /tmp/docs/

Dies ist CPU-intensiv, aber die schnellste Methode zum Bereinigen von /tmp/docs Verzeichnis.

"find"-Befehl

Der find-Befehl ist ein Mehrzweck-Befehlszeilendienstprogramm für die Suche, für das ein separater Artikel erforderlich ist, aber in unserem Fall verwenden wir ihn zum Löschen der Ordner.

Löschen mit Muster im Namen

Lassen Sie uns alle Verzeichnisse nach dem Muster dir* löschen in verschachtelten Verzeichnisnamen:

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

Verwenden Sie dazu den folgenden Befehl:

$ find /tmp/docs -type d -name 'dir*' -exec rm -rf {} +

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

Hier das finden Der Befehl gibt alle verschachtelten Verzeichnisse zurück, deren Name mit dir beginnt :

$ find /tmp/docs -type d -name 'dir*'
/tmp/docs/dir2
/tmp/docs/dir3
/tmp/docs/dir1

Und dann führt es das bereits bekannte rm -rf aus Befehl für jeden Befund (deshalb verwenden wir {} + Reihenfolge).

Entferne alle leeren Verzeichnisse in der Ordnerstruktur

In vielen Fällen möchten Sie möglicherweise nur leere Ordner innerhalb der Ordnerstruktur löschen. Lassen Sie uns dir1 löschen und other_dir aus dem folgenden Beispiel:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
│   └── my_file2
├── dir3
│   └── my_file3
└── other_dir

4 directories, 2 files

So geht's:

$ find /tmp/docs -type d -empty -delete

$ tree /tmp/docs
/tmp/docs
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

2 directories, 2 files

Dateien mit Sonderzeichen löschen (durch Inode)

Wenn Ihr Verzeichnisname Sonderzeichen enthält oder aus nicht-englischen Wörtern besteht, dann üblich rm oder rmdir Befehl funktioniert möglicherweise nicht für Sie. In diesem Fall können Sie dieses Verzeichnis löschen, indem Sie seinen Inode verwenden.

Inode – ist eine Indexknotennummer, die eine Datei oder ein Verzeichnis im Dateisystem darstellt.

Sie können die Datei- oder Verzeichnis-Inode-Nummer mit dem folgenden Befehl finden:

$ ls -il /tmp/docs
total 0
8669007889 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:48 dir2
8669007891 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:46 dir3

In diesem Beispiel dir2 Ordner hat den Inode 8669007889 Nummer.

Jetzt können wir diese Informationen verwenden, um sie zu löschen:

$ find /tmp/docs -inum 8669007889 -exec rm -rf {} +

Hier:

  • -inum – weist das Find-Dienstprogramm an, nach dem Dateisystemobjekt mit der Inode-Nummer 8669007889 zu suchen .
  • -exec rm -rf – weist das Find-Dienstprogramm an, rm mit -rm aufzurufen Argumente für jeden Befund ({} + ).

Zusammenfassung

In diesem Artikel haben wir drei Möglichkeiten zum Löschen von Verzeichnissen in Linux beschrieben. Wir haben auch Sonderfälle wie das Löschen großer Ordner oder Verzeichnisse mit Sonderzeichen im Namen behandelt.

Wir hoffen, dass Sie diesen Artikel nützlich finden. Wenn ja, helfen Sie uns bitte, es auf der ganzen Welt zu verbreiten.

Wenn Sie weitere interessante Anwendungsfälle kennen, die in diesem Artikel behandelt werden könnten, kontaktieren Sie uns bitte im Kommentarbereich unten.


Linux
  1. So suchen und entfernen Sie Verzeichnisse rekursiv unter Linux

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. So entfernen Sie Dateien und Verzeichnisse in der Linux-Befehlszeile [Anfänger-Tutorial]

  4. So deaktivieren Sie das automatische Löschen der Dateien in den Verzeichnissen /tmp und /var/tmp in CentOS / RHEL 5,6

  5. So finden und löschen Sie leere Verzeichnisse und Dateien in Linux

So komprimieren Sie Dateien und Verzeichnisse unter Linux

So entfernen (löschen) Sie das Verzeichnis in Linux

So finden und löschen Sie leere Verzeichnisse in Linux

So entfernen Sie Dateien und Verzeichnisse auf einem Linux-Terminal

So entfernen/löschen Sie Dateien in Linux mit dem Befehl rm

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile