【发布时间】:2016-10-20 08:03:28
【问题描述】:
我有这个 find 命令来获取过去 50 秒内修改的所有文件,这些文件与最后 1000 个字符中的以下正则表达式 hell\d 匹配。
我使用 tail 获取最后 1000 个字符以加快搜索速度,因为要检查的文件很大(平均 3gb)。
find /home/ouhma -newermt '50 seconds' -type f |
while read fic; do
if tail -c 1000 "${fic}" | LANG=C LC_ALL=C grep -Pq 'hell\d'; then
echo "${fic}"
fi
done
是否可以使用-exec 参数来替换那个丑陋的循环并更快地检索结果?
这可行,但我不知道这是不是最好的方法:
find /home/ouhma -newermt '50 seconds' -type f -exec bash -c 'LANG=C LC_ALL=C grep -Pq "hell\d" <(tail -c 1000 "{}") && echo "{}"' \;
【问题讨论】: