
日付範囲内のファイルを分単位で検索する必要があります。秒単位で検索する方法を知っておくと、いつか役に立つかもしれません。とにかく。-newermt や -not -newermt の使い方は学びましたが、これらを組み合わせても正しい結果が得られないようです。find を使用する Linux の例を見つけましたが、スイッチが OSX では機能しないようです。次のファイル リストを参照してください。
#$ ls -l
total 32
-rw-r--r-- 1 testuser staff 1024 Oct 26 20:12 test1.swc
-rw-r--r-- 1 testuser staff 0 Oct 26 19:00 test1_old.swc
-rw-r--r-- 1 testuser staff 1024 Oct 26 20:12 test2.swc
-rw-r--r-- 1 testuser staff 0 Oct 26 19:00 test2_old.swc
-rw-r--r-- 1 testuser staff 1024 Oct 26 20:12 test3.swc
-rw-r--r-- 1 testuser staff 0 Oct 26 19:00 test3_old.swc
-rw-r--r-- 1 testuser staff 1024 Oct 26 20:12 test4.swc
-rw-r--r-- 1 testuser staff 0 Oct 26 19:00 test4_old.swc
-rw-r--r-- 1 testuser staff 0 Oct 26 20:11 test5.swc
-rw-r--r-- 1 testuser staff 0 Oct 26 20:13 test6.swc
-rw-r--r-- 1 testuser staff 0 Oct 26 19:00 timestamp.tmp
次のコマンドは test1.swc から test4.swc までを返すと予想されますが、test6.swc が返されることに注意してください。
#$ find . -newermt '2010-10-26 20:11' -a -not -newermt '2010-10-26 20:13'
./test1.swc
./test2.swc
./test3.swc
./test4.swc
./test6.swc
-not 条件の分が間違っていると思ったので、以下を試しましたが、何も返されませんでした。
#$ find . -newermt '2010-10-26 20:11' -a -not -newermt '2010-10-26 20:12'
#$
-newermt スイッチと -not -newermt スイッチを適切に組み合わせていないという結論に達しました。これを修正する方法についてアドバイスはありますか?
答え1
構文は正しいようです。これらのファイルはどのように作成しましたか。日付を更新するために touch を使用したときに間違った戻り値が表示されるのを見たことがあります。
BSD では -a は不要で、私は -not の代わりに ! を使用する傾向があります (個人的な好み)
コマンドヘルプを検索するときは、BSDを検索することを忘れないでください。私が使用しているいくつかの違いがあるためです。FreeBSD マニュアルページ
ファイルには分を超える値が含まれていることに注意してください。最初の秒が必要な場合は、それをマークする必要があります。私はあなたのような構造を設定しましたが、秒に :00 を追加すると、あなたと同じ結果になりましたが、意味がありませんでした。そこで、ls -lT を実行してファイルの秒数を確認できました。次に find コマンドを実行して、期待どおりの結果が得られました。デフォルトでは、! または -not によって秒数が 59 に設定され、1 分全体が含まれるようです。
#$ . -newermt "2010-10-26 20:11:00" ! -newermt "2010-10-26 20:13:00" を検索