我已经完成了这个指令的一半。最终我会在一个PHP网站中实现它,如果能将其压缩到一行就更好了!
这是我想要做的事情:查找特定日期的压缩文件,然后grep电话号码1234567890。目前我拥有的指令是:
find . -newermt '2014-04-30 08:00:00' -not -newermt '2014-04-30 09:00:00'
结果如下:
./1006AC1.ACT.gz
./1006AC3.ACT.gz
./1006AC4.ACT.gz
./1006AC0.ACT.gz
./1006ABF.ACT.gz
./1006AC5.ACT.gz
./1006AC2.ACT.gz
这很好!但是,这也是我卡住的地方。每一个文件都包含大量记录,为了搜索这7个压缩文件,我通常只需要:
gunzip -c 1006A* |grep 1234567890
但我正在尝试将这两个命令合并为一个。这是我一直在探索的方向:
find . -newermt '2014-04-30 08:00:00' -not -newermt '2014-04-30 09:00:00' |xargs gunzip -c * | grep 1234567890
很不幸,我尝试了这个和其他变体,要么什么都没有搜索到,要么就是全都搜索到了。我无法让它只在输出的7个文件中搜索。
作为备选方案,我的另一个想法(因为目标是将其实现到PHP站点上)是运行第一个命令,然后尝试使用正则表达式查找匹配的文件。 在这种情况下:1006A
然后,我会将其封装在一个变量中,并发送类似于以下内容的第二个命令:
gunzip -c $compressed |grep 1234567890
我的困难在于取出7个文件中相似的字母/数字并输出。感谢任何帮助!Jared