我需要找到文件夹名称以及内容中包含我的字符串的文件名。我在这个目录“ /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
我只想从这个目录运行命令 - “ /data/queue/data
”,但它应该只找到时间戳为 from 的文件夹内的文件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
做这个的最好方式是什么?
答案1
尝试这个:
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
怎么运行的
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" {} +
这会查找比 更新
file1
但不更新的文件file2
。对于所有此类文件,它会grep
在它们上运行以查看它们是否包含您的字符串。