今日から150日前までのディレクトリ、サブディレクトリ、基本ディレクトリ、およびサブディレクトリのファイルを圧縮したいと思います。
ファイルとサブディレクトリの日付に関係なく、コマンドが実行されるディレクトリの日付のみを考慮します。
私はコマンドを使用しました
find . -mtime -151 | xargs zip tnsd3801_Postfeb16_7106.zip
ディレクトリのzipを作成します。しかし、今日から150日間だけ修正されたファイル/サブディレクトリのzipファイルを生成しています。誰でも私を助けることができますか?
答え1
この質問をもっと読むほど、私がそれを理解しているかどうかについて確信が減ります。私はそれが次のように見なされます:あなたは次のディレクトリツリーを持っています
。 ├────dir1⋯ 140日前に修正されました。 │ ├───dir11⋯ 160日前に修正されました。 │ ├────dir12⋯ 140日前に修正されました。 │ ├────dir13⋯ (気にしないでください。) │ ├────dir14⋯ (気にしないでください。) │ ├────dir15。 │ ├────dir16。 │ ├────dir17。 │ └─── ⋮ └────dir2⋯160日前に修正されました。 ├────dir21⋯ 140日前に修正されました。 ├────dir22⋯160日前に修正されました。 ├────dir23⋯ 140日前に修正されました。 ├────dir24⋯160日前に修正されました。 ├────dir25⋯ 140日前に修正されました。 ├────dir26⋯160日前に修正されました。 ├────dir27⋯ 140日前に修正されました。 └──── ⋮ ⋮
dir1
...そして、他のコンテンツの中や下ではなく、眼科の下のすべての項目(、、、、、、、および眼科の下のすべての項目を含む)と、、眼科の下のすべての項目を保管しようとします。 (過去150日間に変更されたディレクトリの内外のすべての内容が欲しいからです。)dir11
dir12
dir13
dir14
dir15
dir16
dir17
dir21
dir23
dir25
dir27
dir2
あなたはこれを行うことができます
find . -type d -mtime -151 -prune -print0 | xargs -0 zip -r tnsd3801_Postfeb16_7106.zip
find . -type d
明らかに、現在のディレクトリの内外でディレクトリを探します。find … -mtime -151
ご存知のように、find
変更日が150日以上のオブジェクトに制限されます。あなたの質問を読んだときに最初に考えたことはありました
-mtime -150
。それからあなたがそれを試しているのを見て「-mtime -151
はい、言葉になる」と思いました。しかし、試してみたいかもしれません。find . -type d -mtime -150 > dirs150 find . -type d -mtime -151 > dirs151 diff dirs150 dirs151
あなたが望むものを決定します。
find … -prune
たとえば、これまでに指定した基準を満たす項目を見つけた場合 いいえそのディレクトリに再帰しますが、そのレベルの次のオブジェクトに進みます。だから、find . -type d -mtime -151 –prune
上記の例のディレクトリ構造について報告する必要があります。
./dir1 ./dir2/dir21 ./dir2/dir23 ./dir2/dir25 ./dir2/dir27
./dir1/dir12
、、、./dir1/dir14
は検索されず、150日が経過していないため./dir1/dir16
表示されません。./dir1
- 名前にスペース文字(スペース、タブ、および改行)を含めることができるディレクトリ名を処理するには、
-print0
およびを使用します。xargs -0
- 次に、指定されたディレクトリを再帰的に検索するオプションを使用して
zip
呼び出します。-r
注:次の場合たくさんディレクトリ、つまりディレクトリ名のリストは数十万文字の長さなので、複数回
xargs
実行する必要があるかもしれません。zip
これは問題ではありません。なぜならzip myarc file1 file2 zip myarc file3 file4
一般的に、、、およびを
myarc.zip
含める必要があります。file1
file2
file3
file4
zip
次へ追加既存のアーカイブを破棄して上書きするのではなく、既存のアーカイブを削除します。ただし、同じ主張を介してtnsd3801_Postfeb16_7106.zip
既存のコンテンツに追加したい場合を除き、上記のコマンドを実行する前にそのエントリが存在しないことを確認する必要があります。