find コマンドによって一致しないファイルが圧縮されることがあります。

find コマンドによって一致しないファイルが圧縮されることがあります。

過去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" "{}" \+

関連情報