gpt4 book ai didi

linux - 在终端/Linux 上查找包含特定日期范围文件名的所有文件

转载 作者:IT王子 更新时间:2023-10-29 00:37:14 24 4
gpt4 key购买 nike

我有一个监控摄像头,它根据我给定的条件捕捉图像。图像保存在我的 Linux 上。图片命名约定如下-

CAPTURE04.YYYYMMDDHHMMSS.jpg

该目录包含以下文件 -

CAPTURE04.20171020080501.jpg
CAPTURE04.20171021101309.jpg
CAPTURE04.20171021101913.jpg
CAPTURE04.20171021102517.jpg
CAPTURE04.20171021103422.jpg
CAPTURE04.20171022103909.jpg
CAPTURE04.20171022104512.jpg
CAPTURE04.20171022105604.jpg
CAPTURE04.20171022110101.jpg
CAPTURE04.20171022112513.jpg ... and so on.

但是,实际上,现在我正在尝试使用终端命令找到一种方法来获取特定日期时间(文件名)范围内的所有文件。注意:需要跟文件名(YYYYMMDDHHMMSS),而不是文件创建/修改时间。

比如我需要获取文件名在2017-10-20 08:30:00和2017-10-22 09:30:00之间的所有文件

我正在尝试并搜索谷歌并获得以下命令 -

find -type f -newermt "2017-10-20 08:30:00" \! -newermt "2017-10-22 09:30:00" -name '*.jpg'

它返回在给定日期范围内创建/修改的文件。但我需要根据给定的文件名范围查找文件。所以我认为它不适用于我的情况。

同时尝试使用以下命令-

find . -maxdepth 1 -size +1c -type f \( -name 'CAPTURE04.20171020083000*.jpg' -o -name 'CAPTURE04.2017102209300*.jpg' \) | sort -n

这不工作.. :(

请帮我写下实际的命令。提前谢谢。

最佳答案

完整的查找 + bash解决方案:

find . -type f -regextype posix-egrep -regex ".*CAPTURE04\.[0-9]{14}\.jpg" -exec bash -c \
'fn=${0##*/}; d=${fn:10:-4};
[[ $d -ge 20171020083000 && $d -le 20171022093000 ]] && echo "$0"' {} \;

  • fn=${0##*/> - 获取文件 basename

  • d=${fn:10:-4} - 从文件的 basename

    中提取 datetime 部分
  • [[ $d -ge 20171020083000 && $d -le 20171022093000 ]] && echo "$0" - 仅在 datetime 部分打印文件路径"在指定范围内

关于linux - 在终端/Linux 上查找包含特定日期范围文件名的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46951256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com