busyboxが取り除かれたシステムでx日より古いファイルを見つける


9

開発ユニットで1週間より古いファイルを見つけて削除する必要があります。このユニットで使用できるユーティリティは限られています。-mtime findの述語は使用できません。この場合、x日より古いすべてのファイルを確認するにはどうすればよいですか?


2
mtime利用できません」の意味がわかりません。それは私が名前を認識しているユーティリティではありません。
Kusalananda

/ path / to / my / folder $ find -type f -mtime +7 delete find:unrecognized:-mtime
Ravi

使用しているLinuxのディストリビューションを共有してください。
シバ

3
なしで構築されたbusyboxのようFEATURE_FIND_MTIMEです。されてFEATURE_FIND_NEWER有効になって?DOESのfind -newer作品?あなたのtestユーティリティまたは[あなたのshサポートの組み込み-ntですか?
ステファンChazelas

1
あなたがそれらを使用できる場合は、これを回避することができますtouch -d/ date +%s[ file -nt other-file ]
ステファンChazelas

回答:


11

-mtimefind(とは対照的に-delete)の標準的な述語ですbusyboxが、FEATURE_FIND_MTIME機能がビルド時に無効にされたの簡略版を持っているようです。

それを有効にしてbusyboxを再構築できる場合、次のことができるはずです。

find . -mtime +6 -type f -exec rm -f {} +

またはFEATURE_FIND_DELETEも有効になっている場合:

find . -mtime +6 -type f -delete

そうでない場合、1週間前の変更時間が設定されているファイルで他のオプションを使用することができますfind -newerFEATURE_FIND_NEWER有効になっていると想定)。

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -newer ../ref -exec rm -f {} +

場合または-newer利用できませんが、sh[サポート-nt

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -exec sh -c '
    for f do
      [ "$f" -nt ../ref ] || printf "%s\0" "$f"
    done' sh {} + |
    xargs -0 rm -f

1
はい、busyboxは軽量版でした。再構築後find . -mtime +6 -type f -exec rm {} \;、私のために働いた
Ravi

2

からman find

-atime n

ファイルが最後にアクセスされたのはn * 24時間前です。ファイルが最後にアクセスされた24時間前の期間が判明した場合、小数部分は無視されるため、-atime +1に一致するには、ファイルは少なくとも2日前にアクセスされている必要があります。

-ctime n

ファイルのステータスは、n * 24時間前に最後に変更されました。丸めがファイルステータス変更時間の解釈にどのように影響するかを理解するには、-atimeのコメントを参照してください。

削除するファイルの使用例に応じて、これらはの他の唯一のオプションですfind。なぜmtime利用できないのですか?どのファイルシステムを使用していますか?他のオプションを検討しましたか?


OPについてさらに質問すること回答ではなく、明確なコメントとして行う必要があります
ジェフシャラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.