過去x分に変更された特定のディレクトリ内のすべてのファイルを含むzipファイルを作成しようとしています。
これは私のコマンドです:
find "/path/to/dir" -mmin -30 -not -name ".*" -exec zip -r "testfile.zip" "{}" \+
変更時間を十分に短く設定すると、最近変更したファイルを正しく識別できます。
問題は...最小修正時間を50(継続的に変更)に増やすとzipファイルが追加されることです。みんな/path/to/dir にあるファイルの数。すべてのファイルが削除されても本当に変更なし。
したがって、 find コマンド全体が競合する特定のファイルが 1 つあります。スペースやその他の内容を含むファイルを見つけるために、最近変更されたファイル(最後の1日以内)をすべて見ましたが、何も見つかりませんでした。中かっこを引用したので、これは問題ではありません。そうですか?
この奇妙な動作を引き起こすもう一つの原因は何ですか?
答え1
デフォルトでは、find
ディレクトリ、ファイル、シンボリックリンクなどすべてが検索に含まれます。
find "/path/to/dir" -mmin -30 -not -name ".*" -exec zip -r "testfile.zip" "{}" \+
/path/to/dir
過去30分以内に修正された場合は、すべてのテストに合格し、オプションが提供されたため、ディレクトリzip
と-r
その下のすべてのエントリがアーカイブに追加されます。
次のいずれか(または両方)を使用して、さまざまな方法でこの問題を解決できます。
zip
オプションを提供しないでください-r
。最後に変更されたディレクトリ内のすべてのファイルではなく、最近変更されたファイルにのみ興味があります。- ディレクトリと一致しないように式に
-not -type d
テストを追加します。find
find "/path/to/dir" -not -type d -mmin -30 -not -name ".*" -exec zip "testfile.zip" "{}" \+