【发布时间】:2014-06-17 03:27:14
【问题描述】:
我已经完成了这个命令的一半。我最终会在一个 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 个文件,并且只输出所有 7 个中相似的字母/数字。
谢谢你的帮助!贾里德
【问题讨论】: