30日以上前のログファイルを検索する

30日以上前のログファイルを検索する

特定のフォルダ内で30日以上経過したファイルを検索するスクリプトを作成中です。要件に基づいて、拡張子が。ログまたは。外サブディレクトリをスキップします。

以下のコマンドは、30 日前に変更されたすべての .log* ファイルを返します。ただし、最近のものも含め、すべての .out ファイルを返します。以下のコードに何か問題がありますか?

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

上記の記述のどこが間違っているのか教えていただけますか

答え1

試す:

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

問題は、find論理 AND が論理 OR よりも強く結合されることです。括弧はそれを阻止します。

括弧なしでは、find一致するファイルを検索しますどちらか(ア)-mtime +30 -type f -name "*.log*" または(b)-name "*.out*".

括弧で囲むと、find(a​​)に一致するファイルを検索します-mtime +30 -type f そして(b) または-name "*.log*"のいずれかに一致します-name "*.out*"

関連情報