0

我正在尝试构建一个 bash 代码行,以便在目录中为我找到一些文件。

(图像)文件名如下:

yyyy-mm-dd_hh_mm_ss.xxx.jpg

我想要所有文件:

年份:2012,月份:02-12,时间:08:00-16:00

2012 年所有日子的每一分钟都有一个文件。

我尝试了以下开始,但没有找到任何东西:

find . -regex './2012-11-11_(0[8-9]|1[0-6])_*_*.*.jpg' | wc -l

我知道,我需要更改11-11以匹配所有天,但已经卡在匹配时间上。

我一直在阅读需要指定的地方-regextype posix-extended,但它不知道此选项,并且手册中也没有替代方案。

4

3 回答 3

2

在 OSX 上使用这个基于正则表达式的查找:

find -E . -regex '\./2012-(0[2-9]|1[0-2])-[^-]+_(0[8-9]|1[0-6])_.*\.jpg'
于 2013-07-31T14:31:12.077 回答
1

你很困惑regexpshell globbing

替换*with .*(或更好,用\d{2}- 两位数)、.with \..表示任何字符)等。

阅读一些正则表达式文档会很棒。

于 2013-07-31T14:26:46.430 回答
1

我认为这与正则表达式无关。您只想在 2 个时间戳之间查找文件,因此您可以触摸 2 个文件,将这 2 个文件的修改时间更改为 2012-02-01 和 2012-12-01。

然后使用“find -cnewer file1 and !-cnewer file2”来找出你需要的那些文件。也 -cmin -ctime 也许可以使用。

于 2013-08-22T07:30:58.723 回答