特定のフォルダで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
論理ORが論理ORよりも密接に結合されることです。括弧はこれを相殺します。
括弧はありません。find
一致するファイルを探しています。誰でも(ㅏ)-mtime +30 -type f -name "*.log*"
または(2)-name "*.out*"
。
括弧を使用してfind
(a)に一致するファイルを検索する-mtime +30 -type f
そして(b)一致-name "*.log*"
または-name "*.out*"
。