web-dev-qa-db-ja.com

15秒より新しいが2秒より古いファイルを検索する

15秒より新しいが2秒より古いファイルを検索したい。 15秒より新しいファイルを取得するために現在使用しているスクリプトは次のとおりです。

find /my/directory -name '*.jpg' -not -newermt '-15 seconds'

どんな助けでも大歓迎です

18
Yllier123

複数の述語をチェーン化することで組み合わせることができます。

-oldermtはありませんが、-not -newermtと書くことができます。

あなたが欲しい:

  • -newermt '-15 seconds'は、ファイルが古いもので15秒未満であり、
  • -not -newermt '-2 seconds'は、ファイルが2秒以上前のものであることを示します

試してください:

find /my/directory -newermt '-15 seconds' -not -newermt '-2 seconds'

または、POSIXに準拠するには:

find /my/directory -newermt '-15 seconds' \! -newermt '-2 seconds'

また、あなた(と他の読者)が知っているように、「より新しい」とは、より最近に作成されたものではなく、より最近に変更されたことを意味します。

17
Mikel

あなたはあなたのOSについて言及しなかった...

これは、FreeBSDのような現代のfind実装やsfindでうまく機能します。

find /my/directory -name '*.jpg' -mtime -15s -mtime +2s

SfindはSchilyツールの一部です: http://sourceforge.net/projects/schilytools/files/

警告:sfindで問題を発見しました。 -mtime引数が60秒未満の場合、ファイル時間が現在-lsの年の切り替えに対して最初に計算された60秒後のタイムスタンプと現在比較されているため、正しく動作しません。

ところで:-notfindに属していません。これは移植性のないGNUismです。

4
schily