Grep在一个目录中

时间:2015-03-26 15:50:02

标签: bash shell grep

我有一个名为Liste的子目录,里面有texte个文件,我想找一个文本(里面有一个电话号码):

read $number
while ! grep -l $number * Liste; do
    echo"Le fichier n'existe pas"
    read $number
done
grep -l  $number * Liste

但它不起作用。感谢。

我犯了一个错误,这是我的代码,它向我展示了2次./Liste/"name“

2 个答案:

答案 0 :(得分:2)

问题是read的参数是变量 name ,而不是它的值。换句话说,放弃美元符号。

read number
while ! grep -iq "$number" Liste/*; do
     echo "Le numero n'existe pas"
     read number
done
echo " Le numero existe"

还要注意如何正确引用,以及如何引用目录Liste中的所有文件。最后,-q选项会抑制grep的正常输出(它会打印每个匹配项 - 如果您输入类似.的内容,则会打印目录中每个文件的每一行!)最后,请注意还要echo之后的空格是强制性的。

更新:如果要首先将没有前导目录名的匹配的文件名cd列入目录。

cd Liste
read number
while ! grep -il "$number" *; do
    echo "Le numéro n'existe pas"
    read number
done
echo "Le numéro existe"

(我假设您想要文件名,我添加了-l选项;但如果您不想,请将其删除。)

答案 1 :(得分:0)

您可以使用:

grep "$number" ./Liste/* >/dev/null && echo "Le numero existe" || echo "Le fichier n'existe pas"

或者,如果要输出匹配的文件的名称,请使用l选项:

grep -l "$number" ./Liste/*

根据您的评论,使用:

grep -l "$number" Liste/* | xargs basename