是否可以查找在两个特定时间之间创建的文件而忽略日期?

是否可以查找在两个特定时间之间创建的文件而忽略日期?

我有数千张 jpg 延时摄影,想知道是否可以仅列出白天拍摄的照片?因此,这不是列出两个日期之间的文件,而是列出任何日期的两个小时之间的文件。例如:早上 6 点到下午 6 点之间。

我可以使用 find 来做到这一点吗?

答案1

这个命令对我有用

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

尽管如此,它是文件的 unix 时间戳而不是用于搜索的 exif 数据时间戳,我不确定性能,但我给出了这个答案,正如您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小时)。

相关内容