zip -mtime -150ディレクトリの作成方法

zip -mtime -150ディレクトリの作成方法

今日から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日間に変更されたディレクトリの内外のすべての内容が欲しいからです。)dir11dir12dir13dir14dir15dir16dir17dir21dir23dir25dir27dir2

あなたはこれを行うことができます

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含める必要があります。file1file2file3file4zip次へ追加既存のアーカイブを破棄して上書きするのではなく、既存のアーカイブを削除します。ただし、同じ主張を介してtnsd3801_Postfeb16_7106.zip既存のコンテンツに追加したい場合を除き、上記のコマンドを実行する前にそのエントリが存在しないことを確認する必要があります。

おすすめ記事