我想要的是制作一个小脚本,对成功通过另一个 grep 的文件进行 grep。
这是我写的:
#!/bin/bash -f
if (( $# != 3 ))
then
echo "Usage: $0 <directory> <grep1> <grep2>"
exit 1
fi
dir=$1
grep1=$2
grep2=$3
files=`grep -Ril "$grep1" $dir`
for file in $files; do
grep -iH "$grep2" $file
done
所以这有效,以防目录是特定的。但它不能以我想使用的方式工作:
./grepIfSucceededGrep.sh /mnt/logs/\*/20130929/\* test1 test2
grep: /mnt/logs/*/20130929/*: No such file or directory
但是当我手动输入命令时,它可以完美运行。必须对星号做些什么。
grep -Ril "segment1" /mnt/logs/*/20130929/*
/mnt/logs/1111/20130929/000033.00.log
/mnt/logs/1112/20130929/000033.00.log
/mnt/logs/1113/20130929/154852.00.log
/mnt/logs/1114/20130929/171227.00.log
为什么?!:( 只是搜索了 2 小时以获得解决方法,但没有解决该问题。