
私はこの問題が再び現れると確信しているので、この問題に対する一般的な解決策を探しています。
医学研究をするお客様がいます。私たちは、地域の保健当局が提供したデータセットを定期的に削除し、それを安全に実行したことを証明する必要があります。
私たちはrsnapshotを使用して維持します。
7 dailies,
4 weeklies,
12 monthlies,
4 yearlies.
最近、rsnapshotツリーから数年前のデータを削除する必要がありました。
/path/to/studyName/data files yyyy mm 01/bunchOfFiles
/path/to/studyName/data files yyyy mm 02/bunchOfFiles
/path/to/studyName/data files yyyy mm 03/bunchOfFiles
/path/to/studyName/randomly placed and named data file 1
/path/to/studyName/randomly named admin file to keep 1
/path/to/studyName/randomly placed and named data file 2
/path/to/studyName/randomly placed and named data file 3
/path/to/studyName/randomly named admin file to keep 2
/path/to/studyName/randomly named admin file to keep 3
/path/to/studyName/randomly placed and named data file 4
/path/to/studyName/randomly named admin file to keep n
/path/to/studyName/randomly placed and named data file 5
./data files* サブディレクトリは他の多くの調査場所にも表示されるため、検索対象として使用できません。
私がやりたいことは、findといくつかのネストされた-execコマンドを含めることです。しかし、findはこれを行うことはできません。
最初の-execコマンドでbash -cネストされた-execを試しました。処理する必要があるさまざまな操作(サブディレクトリ名のスペースなど)を処理した後、タイマーがシャットダウンされ、ファイルのすべてのインスタンス(またはデータを含むサブディレクトリ)を削除する巨大なrmコマンドバーを作成する方が費用対効果が高くなります。ファイル)。
たとえば、-execsがネストできる場合は、次のように動作すると思います。
find /path/to/rsnapshot_tree -type d -name studyName /
-exec 'find {} -type d -iname "data files* -exec rm -rf {} \;'
いいですね。 -execの終了と{}のあいまいさのために機能しませんが、疑似コードを検討してください。
本質的に、
- rhapshot ツリーで「studyName」ディレクトリの各インスタンスを探し、「data files*」で説明されている 3 つのディレクトリに rm -rf を適用します。
- 次に、StudyNameディレクトリに誤って配置された各データファイルインスタンスに対してこの操作を繰り返します
。
150を超えるコマンドの代わりに、スクリプトから6つのコマンドを正しくコピー、貼り付け、編集、使用する必要がありました。
より良いアプローチの提案をいただきありがとうございます。
Linux(debian/ubuntu)およびfreeBSDホストでホストされているrsnapshotツリーがあります。 Bashは常にシェルです(freeBSDホストでデフォルト値を変更しました)。
答え1
あなたの質問について完全には明確ではありませんが、次のようなディレクトリ構造がある場合 -
a
a/data
a/data/file1
a/studyName
a/studyName/data
a/studyName/data/file1
a/studyName/data/file2
a/studyName/data/file3
StudyName/data/fileXを探している場合は、次のことができます。
find . -path "*studyName/data*" -type f
./a/studyName/data/file1
./a/studyName/data/file2
./a/studyName/data/file3