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

Wie verwende ich den Befehl find, um Dateien zu löschen, die einem Muster entsprechen?

Lösung 1:

Ich finde das im Allgemeinen mit dem -exec Option für find einfacher und weniger verwirrend sein. Versuchen Sie Folgendes:

find . -name vmware-*.log -exec rm -i {} \;

Alles nach -exec wird als Befehl angesehen, der für jedes Ergebnis ausgeführt wird, bis zu ; , das hier maskiert wird, damit es an find übergeben wird . Die {} wird durch den Dateinamen ersetzt, der find würde normalerweise drucken.

Sobald Sie überprüft haben, dass es Ihren Wünschen entspricht, können Sie -i entfernen .

Lösung 2:

Wenn Sie GNU find haben Sie können den -delete verwenden Möglichkeit:

find . -name "vmware-*.log" -delete

Um xargs zu verwenden und vermeiden Sie das Problem mit Leerzeichen in Dateinamen:

find . -name vmware-*.log -print0 | xargs -0 rm

Ihre Protokolldateien sollten jedoch keine Leerzeichen in ihren Namen enthalten. Textverarbeitungsdokumente und MP3-Dateien haben sie wahrscheinlich, aber Sie sollten in der Lage sein, die Namen Ihrer Protokolldateien zu kontrollieren.

Lösung 3:

Sie können find sagen um die Ausgabeliste mit NULLen zu begrenzen, und xargs um seine Eingabeliste zu erhalten, das gleiche:

$ ls -l "file 1" "file 2"
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 2

$ find . -name 'file *' -print0 | xargs -0 ls -l
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 2

$ find . -name 'file *' -print0 | xargs -0 rm -v
removed `./file 2'
removed `./file 1'

Stellen Sie außerdem sicher, dass Sie * maskieren , entweder mit einem umgekehrten Schrägstrich oder indem Sie den vmware-*.log enthalten in einfache Anführungszeichen, sonst könnte Ihre Shell versuchen, es zu erweitern, bevor es an find übergeben wird .

Lösung 4:

Vergessen Sie nicht die -delete des Fundes Möglichkeit. Es entfernt die Datei ohne Fehler mit Sonderzeichen ...


Linux
  1. So finden Sie die Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen

  2. So löschen Sie RIESIGE (100-200 GB) Dateien in Linux

  3. So verwenden Sie den Grep-Befehl, um Text in Dateien zu finden

  4. Wie verwende ich Regex mit dem Find-Befehl?

  5. Löschen Sie übereinstimmende Dateien in allen Unterverzeichnissen

So verwenden Sie den cp-Befehl zum Kopieren von Dateien und Verzeichnissen

So verwenden Sie den SCP-Befehl zum Übertragen von Dateien

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So finden Sie Dateien mit dem fd-Befehl in Linux

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

So finden Sie Ordner in Linux