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?

Saeid Yazdani
quelle
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

Sundeep
quelle
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 {} \;
Techraf
quelle
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
Matthew Hub
quelle