我有一份包含几千个 gzip ( *.gz
) 文件的列表,我想zgrep
浏览这些文件,但我只想对最后修改时间戳在昨天(2012 年 11 月 22 日)或之后且文件名中包含字符串“widget”的文件运行它(通过这些文件进行过滤可将文件数量减少到大约 80 个)。
我没有看到可以添加到我的zgrep
命令中的任何时间戳或文件模式参数 - 有什么想法吗?
例如:
eijdij8484.gz modified last on 11/20/2012 <== dont zgrep
dj8j4848ju-widget-dj8d4dj48d.gz modified last on 11/20/2012 <== dont zgrep bc of timestamp
ijdijdijdjii.gz modified last on 11/23/2012 <== dont zgrep bc no "widget" in filename
3ijdidj4-widget-jd9idj48.gz modified last on 11/22/2012 <== zgrep!
提前致谢!
答案1
类似这样的事情可能会让你走上正确的方向。
#!/bin/bash
cutoff="20121122"
for i in `find . -type f -name "*widget*.gz"; do
modDate="`stat -c %y $i | awk '{print $1}' | sed 's/-//g'`"
if [ ${modDate} < ${cutoff} ]; then
command here on $i
fi
done
这是一个快速写的,因为我的妻子正在等我出门,所以尝试一下,我将尝试在今晚晚些时候进行更深入的测试。
编辑- 这是相对于当前日期浮动的“昨天”吗?还是固定的“11/22/12”?