Suche nach Protokolldateien, die älter als 30 Tage sind

Suche nach Protokolldateien, die älter als 30 Tage sind

Ich arbeite an einem Skript, um Dateien zu finden, die älter als 30 Tage in einem bestimmten Ordner sind. Je nach Anforderung muss ich nur Dateien mit der Erweiterung löschen.Protokolloder.ausund Unterverzeichnisse überspringen.

Der folgende Befehl gibt alle .log*-Dateien zurück, die vor 30 Tagen geändert wurden. Er gibt jedoch alle .out-Dateien zurück, auch die neueren. Ist im folgenden Code etwas falsch?

    find -maxdepth 1 -mtime +30 -type f -name "*.log*" -o -name "*.out*"

Können Sie mir sagen, was an der obigen Aussage falsch ist?

Antwort1

Versuchen:

find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)

Das Problem war, dass finddas logische „und“ stärker bindet als das logische „oder“. Die Klammern wirken dem entgegen.

Ohne Klammern findwird nach Dateien gesucht, die übereinstimmenentweder(A)-mtime +30 -type f -name "*.log*" oder(B) -name "*.out*".

Mit den Klammern findwird nach Dateien gesucht, die (a) übereinstimmen-mtime +30 -type f Und(b) entweder mit -name "*.log*"oder übereinstimmen -name "*.out*".

verwandte Informationen