2017-03-29 8 views
1

特定のサブフォルダから5日以上経過したファイルを削除するスクリプトを作成したいとします。私は、次のコマンドを認識してよ:ランダムに作成された特定のサブディレクトリ内のファイルを削除する

find /path/to/files* -mtime +5 -exec rm {} \; 

私はこの時点で直面してる問題は、私のフォルダの構造のいくつかの明確化が必要である:

/カサンドラ/データ/データ/ CPMの/バスケット/スナップショット
/カサンドラ/データ/データ/顧客/顧客/スナップショット
/カサンドラ/データ/データ/プロファイル/顧客/スナップショット

私は唯一の私のスクリプトは、私を見てほしいですnスナップショットフォルダとそこからのみファイルを消去すると、問題はいつでもアプリケーションが 'data'ディレクトリまたは現在の既存ディレクトリの下に新しいフォルダを作成できることです。すなわち

/カサンドラ/データ/データ/ CPMの/ new_basket /スナップショット

OR

/カサンドラ/データ/データ/ new_category/new_folder /スナップショット

ハードコードでは、アプリケーションが新しい構造を作成するとすぐにディレクトリは無関係になります。コードを更新するまで、ディレクトリは有効になりません。

find /cassandra/data/data <look in *this* directory for a folder named snapshots [it might still be 1 or 2 levels down] in the folders below data> & delete only files older than 5 days in snapshot folders found? 

だから、/カサンドラ/データ/データディレクトリに移動しなければならない私のスクリプトは、 'という名前のすべてのフォルダを見つけ、[私は願っています]明確にする:

このようなコマンドを実行する方法はありますスナップショット 'を作成し、それらのフォルダからファイルのみを削除します。

答えて

1

スナップショットフォルダの検索を開始するトップレベルのディレクトリにあると仮定します(「-mtime 5 -exec rm」を-lsだけに置き換えて、フォルダを適切に検索していることを確認できます) :

find . -name snapshot -a -type d | while read a ; do find "$a" -ls ; done 

または、さらに簡単:

find . -path '*/snapshot/*' -a -type f -a -mtime 5 -exec ls -l {} \; 
+0

はあなたにウェインをありがとうございました。これはまさに私が望むことをするようです。私は今いくつかのテストをしていますが、これまでのところ私が必要とするものを見つけるようです。助けを感謝する –

関連する問題