Wie entferne ich alle Dateien aus einem Verzeichnis?


Zur akzeptierten Antwort gehen


Der nächste, den ich bekommen habe, ist

 # rm /path/to/directory/*.*
 

aber das funktioniert nicht für Dateien, die keine Erweiterung haben ...


304





2011-09-06




Anzahl der Antworten: 9


Linux verwendet keine Erweiterungen. Es ist Sache des Erstellers der Datei, zu entscheiden, ob der Name eine Erweiterung haben soll. Linux untersucht die ersten Bytes, um herauszufinden, um welche Art von Datei es sich handelt.

  • Um alle nicht versteckten Dateien * in einem Verzeichnis zu entfernen, verwenden Sie:

     rm /path/to/directory/*
     

    Dies zeigt jedoch einen Fehler für jedes Unterverzeichnis an, da in diesem Modus nur Dateien gelöscht werden dürfen.

  • Um alle nicht ausgeblendeten Dateien und Unterverzeichnisse (zusammen mit ihrem gesamten Inhalt) in einem Verzeichnis zu entfernen, gehen Sie wie folgt vor:

     rm -r /path/to/directory/*
     

* Versteckte Dateien und Verzeichnisse sind solche, deren Namen mit . (Punkt) beginnen, zB: .hidden-file oder .hidden-directory/ . Beachten Sie, dass in Bash, wenn die dotglob Option (die standardmäßig deaktiviert ist) aktiviert ist, rm auch versteckte Dateien bearbeitet werden, da diese eingeschlossen werden, wenn * sie von der Shell erweitert werden, um die Liste der Dateinamenargumente bereitzustellen.


354


2011-09-06

  • So entfernen Sie den Ordner mit seinem gesamten Inhalt ( einschließlich aller internen Ordner ):

     rm -rf /path/to/directory
     
  • So entfernen Sie den gesamten Inhalt des Ordners ( einschließlich aller internen Ordner ), jedoch nicht den Ordner selbst:

     rm -rf /path/to/directory/*
     

    oder

     rm -rf /path/to/directory/{*,.*}
     

    wenn Sie sicherstellen möchten, dass auch versteckte Dateien / Verzeichnisse entfernt werden.

  • So entfernen Sie alle "Dateien" aus einem Ordner ( ohne interne Ordner zu entfernen ):

     rm -f /path/to/directory/{*,.*}
     


  • Warnung : Wenn Sie Leerzeichen in Ihrem Pfad haben, stellen Sie sicher, dass Sie immer Anführungszeichen verwenden.

     rm -rf /path/to the/directory/*
     

    entspricht 2 getrennten rm -rf Aufrufen:

     rm -rf /path/to
    rm -rf the/directory/*
     

    Um dieses Problem zu vermeiden, können Sie ' einfache Anführungszeichen ' ( erweitert keine Shell-Variablen) oder " doppelte Anführungszeichen " ( erweitert Shell-Variablen) verwenden:

     rm -rf "/path/to the/directory/"*
     


Wo:

  • rm - steht für " entfernen "
  • -f - steht für " force ", was hilfreich ist, wenn Sie nicht gefragt werden möchten, ob Sie beispielsweise ein Archiv entfernen möchten.
  • -r - steht für " rekursiv ", was bedeutet, dass Sie jeden Ordner rekursiv durchgehen und alles entfernen möchten.

177


2011-09-07

So entfernen Sie alle Dateien im Verzeichnis (einschließlich versteckter Dateien und Unterverzeichnisse):

 rm -rf /path/to/directory/{*,.*}
 

44


2014-11-23

Wenn Sie nur Dateien in / path / to / directory löschen möchten, können Sie dies tun

 find /path/to/directory -type f -print0| xargs -0 rm 
 

oder

 find /path/to/directory -type f -exec rm '{}' \;
 

Sie können Lasten damit erledigen find , der Vorteil ist, dass Sie auflisten können, was gefunden wird, ohne es weiterzuleiten, rm sodass Sie sehen können, was gelöscht wird, bevor Sie beginnen.


11


2011-09-06

Um alle Dateien und Verzeichnisse (einschließlich der ausgeblendeten ) in einem Verzeichnis zu löschen , können Sie Folgendes versuchen:

  • Löschen Sie den Ordner und erstellen Sie ihn neu

     rm -rf dir_name && mkdir dir_name
     
  • verwenden find

     find dir_name -mindepth 1 -delete  
     

Hier geben wir -mindepth 1 an, dass das Verzeichnis dir_name selbst ausgeschlossen werden soll.
Schauen Sie sich den folgenden Link an:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory


7


2013-11-27

Wenn Sie auch alle Unterverzeichnisse und das Verzeichnis selbst entfernen möchten, können Sie verwenden rm -rf /path/to/directory . Aber überprüfen Sie Ihre Zeile immer noch einmal, bevor Sie die rm -rf Eingabetaste drücken. Dies kann ebenfalls zu Problemen führen, z. B. wenn Sie versehentlich nach dem ersten Schrägstrich ein Leerzeichen einfügen, während Sie über Superuser-Berechtigungen verfügen.


6


2011-09-07

Da diese Frage bei Google ständig im Vordergrund steht, wenn ich selbst danach suche:

Die anderen Antworten haben unterschiedliche Probleme:

  1. Einige von ihnen gehören . und .. das ist laut, verwirrend und ärgerlich.

  2. Einige von ihnen vergessen versteckte Dateien (Dateien, die mit einem Punkt beginnen).

  3. Sie werden nicht in der richtigen (tiefsten zuerst) Reihenfolge gelöscht, um das Löschen des Verzeichnisses zu ermöglichen.

  4. Sie gehen in andere (gemountete) Dateisysteme über, was häufig unerwünscht ist.

  5. Es ist schwierig, sie mit zusätzlichen Parametern richtig zu erweitern (mehr dazu weiter unten).

Gehen Sie folgendermaßen vor, um alle Dateien UND Ordner in einem Verzeichnis REKURSIV zu löschen:

 find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
 

Beachten Sie, dass ich ein -xdev Argument hinzugefügt habe , um das Herabsteigen in Reittiere (wie /proc usw.) zu verhindern .

Warum nicht -depth oder -delete ?

Obwohl die Leute mich ständig dafür herabstimmen, haben diese Methoden einen Nachteil: Sie scheinen nicht erweiterbar genug zu sein, um -prune ein Unterverzeichnis zuzulassen (ohne weitere Probleme einzuführen). Im Gegensatz zu dieser Methode könnten Sie einfügen

 -not \( -path "${DIR}/subdir" -prune \)
 

vor dem -mindepth Argument, um auszuschließen, subdir dass sein Inhalt gelöscht wird.


1


2018-05-21

Sie können cd in das Verzeichnis und führen Sie den Befehl rm *.* wie in DOS, wenn Sie sich erinnern.


0


2013-05-01

Zum Löschen des aktuellen Verzeichnisses könnten Sie beispielsweise verwenden rm -d ./*

-d weist an, auch Verzeichnisse zu löschen.


0


2017-08-29