在linux中查找两个文件夹日期之间的文件?

dav*_*vid 4 grep find search timestamps files

我需要找到文件夹名称以及在其内容中包含我的字符串的文件名。我在这个目录“ /data/queue/data”中,我在同一个目录中有很多文件夹,在每个文件夹中,我有各种文件。

以下是此目录“ /data/queue/data”中的文件夹,每个文件夹中都有各种文件。

david@machineA:/data/queue/data$ ls -lrth
drwxr-xr-x 2 david david  12K Apr 11 18:58 1428800400
drwxr-xr-x 2 david david  12K Apr 11 19:58 1428804000
drwxr-xr-x 2 david david  12K Apr 11 20:58 1428807600
Run Code Online (Sandbox Code Playgroud)

我只想从这个目录运行一个命令——“ /data/queue/data”,但它应该只在文件夹中找到时间戳来自April 13th 3 AM to April 13th 9 AM.

下面是我的命令,它将递归地查找所有文件夹中的文件,但我应该如何确保它只能从April 13th 3 AM to April 13th 9 AM文件夹中查找文件?

david@machineA:/data/queue/data$ grep -rl "pcV6URY" /data/queue/data
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

Joh*_*024 6

尝试这个:

touch -d"April 13 3 AM" file1
touch -d"April 13 9 AM" file2
find . -newer file1 ! -newer file2 -exec grep -l "pcV6URY" {} +
rm file1 file2
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

find可以直接处理时间,但touch可以更好地处理人类风格的日期:

  • touch -d"April 13 3 AM" file1; touch -d"April 13 9 AM" file2

    这将创建两个文件来标记时间范围的开始和结束。

  • find . -newer file1 ! -newer file2 -exec grep -l "pcV6URY" {} +

    这会查找file1file2. 对于所有此类文件,它会grep在它们上运行以查看它们是否包含您的字符串。