Suchen und Entfernen von Dateien, die größer als eine bestimmte Größe und ein bestimmter Typ sind


9

Ich möchte meinen Server von großen Protokolldateien und Sicherungen bereinigen.

Ich habe mir das ausgedacht:

find ./ -size +1M | xargs rm

Aber ich möchte nicht mp3 und mp4 einschließen. Ich möchte dies nur für Protokoll- und Archivdateien (zip, tar usw.) tun.

Wie wird der Befehl aussehen?


2
versuchen Sie find / -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -delete.. fügen Sie hinzu, welche Erweiterung Sie löschen möchten
Sundeep

1
und besser, den Befehl ohne den -deleteTeil für die Überprüfung der
geistigen Gesundheit

2
@ Said Yazdani. ..... Wenn Sie alle + 1M in / löschen, wird Ihr Betriebssystem "gelöscht": libc.so.**ca. 1,8 MB! -
Knud Larsen

@ KnudLarsen Sie haben Recht, ich wollte in meinem Home-Verzeichnis sein und für "find ./"....Ich habe die Frage bearbeitet
Saeid Yazdani

@spasic danke, es war das, was ich brauchte ... möchtest du als Antwort posten?
Saeid Yazdani

Antworten:


14
find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -delete
  • Das \( \)Konstrukt ermöglicht das Gruppieren verschiedener Dateinamenmuster
  • Durch die Verwendung der -deleteOption können wir Rohrleitungen und Probleme mit xargsSee this , this und this vermeiden
  • ./oder .ist optional, wenn der findBefehl für das aktuelle Verzeichnis verwendet wird


Bearbeiten: Wie Eric Renouf bemerkt , verwenden Sie die Option , wenn Ihre Version von finddie -deleteOption nicht unterstützt-exec

find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -exec rm {} +

Dabei werden alle findnach rmBefehl gefilterten Dateien an den Befehl übergeben


2
Es ist erwähnenswert, dass nicht alle Versionen der findUnterstützung -delete, obwohl Sie xargsmit-exec rm {} +
Eric Renouf

7

Wenn Sie Dateien nach Namen ausschließen möchten, können Sie folgende Syntax verwenden:

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete

oder wenn Ihr findnicht unterstützt delete:

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;

Es ist erwähnenswert (auch hier), dass nicht alle Versionen der findUnterstützung-delete
Eric Renouf

Übrigens welche nicht? Ich überprüfte Vanille OSX und gfind...
Techraf

2
Nun, ich habe AIX nicht, um es direkt selbst zu überprüfen, aber es ist nicht in den Optionen für diese Version dokumentiert
Eric Renouf

1

Basierend auf den obigen Antworten habe ich den folgenden Befehl verwendet, um den Server aus großen Protokolldateien zu löschen (nachdem ich in / var / lib / jenkins cd'ed habe).

find -type f -name *log -size +500M -delete
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.