我正在尝试将2个find命令组合到一个grep模式匹配管道。
我的3个命令是:
在过去24小时内修改了文件:
find '/logs' -mtime 0 -type f
忽略几个目录:
find -type d \( -path /dir -o -path /dir2 -o -path /dir3 \) -prune -o -print
在文件的行中找到模式:
grep -rnw -e "my pattern"
我已经开始工作,但似乎无法将目录跳过添加到混音中。
在过去24小时内修改文件,并在文件的行中找到模式:
find '/logs' -mtime 0 -type f | xargs grep -rnwI -e "my pattern"
理想情况下,我想结合在过去24小时内修改文件并忽略目录。
答案 0 :(得分:1)
也许这种缓慢的解决方案可以解决您的问题:
find '/logs' -mtime 0 -type f | grep -v dir | grep -v dir2 | grep -v dir3| xargs grep -rnwI -e "my pattern"
答案 1 :(得分:1)
find '/logs' ! -path "*/dir1/*" ! -path "*/dir2/*" ! -path "*/dir3/* -mtime 0 -type f | xargs grep -rnwI -e "my pattern"
或
find '/logs' -mtime 0 -type f | egrep -v "dir1|dir2|dir3" | xargs grep -rnwI -e "my pattern"
答案 2 :(得分:1)
可能根本不使用find而是使用grep的递归功能以及--exclude-dir选项(或者可能是--exclude-from选项,请参阅man grep
了解详细信息)。
grep -r --exclude-dir=dir1 --exclude-dir=dir2 --exclude-dir=dir3 -nwI -e "my pattern" /logs*