web-dev-qa-db-ja.com

30日以上経過したファイルを見つけて削除する

30日以上経過したユーザーファイルを消去したいと考えています。次のbashスクリプトは完璧に機能します。しかし、私は自分のエコーがあるので、出力に表示される「そのようなファイルまたはディレクトリはありません」エラーを削除しようとしています。誰か助けてくれますか?

コード:

if [[ $(find /h/$USER/*.txt -mtime +30) ]]
then
    find /h/$USER/*.txt -mtime +30 -print -exec rm -f {} \;
else
    echo "No txt files to del"
fi

出力:

find: stat() error /h/username/*.txt: No such file or directory
No text files to del
3
StackmeUp123

これは私がそれを行う方法であり、毎晩掃除したいたくさんのディレクトリで実行されます。

find /h/$USER -maxdepth 1 -name "*.txt" -type f -mtime +30 -delete

それが最善または最悪の方法であるかどうかはわかりませんが、何年も問題なく実行されており、実際には残骸の掃除機のコレクションであり、すべて同じ構文で問題はないので、本番環境には十分だと思います。

2
Lizardx

以下のコマンドを使用して、エラーを/ dev/nullにリダイレクトします。エラーは表示されません

find path -type f -daystart -mtime +30 -exec rm -rvf {} \;  2>/dev/null
0