日付を無視して、特定の2時間の間に生成されたファイルを見つけることはできますか?

日付を無視して、特定の2時間の間に生成されたファイルを見つけることはできますか?

何千枚ものjpgの低速撮影がありますが、日中に撮影したものだけを一覧表示できるかと思います。したがって、2 つの日付の間のファイルを一覧表示するのではなく、特定の日付の 2 時間の間のファイルを一覧表示します。例:午前6時から午後6時の間。

これを行うためにfindを使用できますか?

答え1

このコマンドは私にとって効果的でした。

find . -iname "*pg" -printf '%Tc %p\n' | grep "\ 08:\|\ 07:\| \06:"

それでも、検索用のEXIFデータタイムスタンプではなく、ファイルのUNIXタイムスタンプです。パフォーマンスはよくわかりませんが、findutilsタグで示されているようにこの回答を差し上げました。

答え2

ファイルに作成日時を含むEXIFデータがある場合は、exiftool時間とファイル名のみを一覧表示してフィルタリングできます。

find . -name '*jpg' -exec exiftool -q -d '%H' -p '$CreateDate $filename' \; 2>/dev/null |
awk '$1>=6 && $1<18 {$1=""; print}'

まず、ファイルの日付/時刻を確認して、現地時間かタイムゾーンオフセットがあるUTCかを確認します。単一ファイルで実行すると、exiftool -CreateDate出力は次のようになります。

Create Date   : 2013:06:19 14:03:13+08:00

オフセットがある場合(この場合は+8時間)

関連情報