0

現在、週に 1 回実行され、その間に蓄積されたファイルを見つけて削除する cron ジョブがあります。次のようになります。

find $DIR1 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7 >> /tmp/file.txt

ただし、サーバー上の別のディレクトリで同じことを実行したい ($DIR1 と $DIR2 である必要があります。システム全体でルートから検索を実行することは実行できません) が、コマンドを繰り返し実行するとうまくいくと思いますが、それは醜く、冗長で非効率的です。

したがって、何らかの方法でリストを作成し (つまり、FILES="file1 file2 file3")、両方のディレクトリをチェックし、見つかった結果を上記のようにテキスト ファイルに出力する合理化された方法を使用したいと考えています。

これを行う方法がよくわかりません。おそらくループを行うことを考えましたが、それは基本的すぎるようです。誰かが私に骨を投げて、正しい方向に向けることができますか? 私が心配しているのは、これをfindで動作させることです。

編集: 明確にするために、$DIR2 の 2 回目の検索は 14 日 (mtime +14) より古いファイルを対象としているため、既存の文字列に $DIR2 を追加するだけでは機能しません。

ありがとう!

4

2 に答える 2

0

これを試しましたか:

find $DIR1 $DIR2 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7 >> /tmp/file.txt
于 2013-01-17T21:25:01.003 に答える
0

bash スクリプト、つまり delete_files.sh を作成し、crontab に bash スクリプトを追加する方がはるかに簡単です。次回、別のディレクトリにさらにパターンを追加する場合は、bash スクリプトのみを記述すれば、自動的に cronjob に追加されます。

#!/usr/bin/bash

echo $(find $DIR1 $DIR2 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7) >> /tmp/file.txt;

また

#!/usr/bin/bash

echo $(find $DIR1 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7) >> /tmp/file.txt;
echo $(find $DIR2 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7) >> /tmp/file.txt;
于 2016-12-01T19:25:31.900 に答える