关于grep的问题

时间:2011-08-02 07:40:41

标签: linux shell

通过grepping特定模式返回的许多结果中,如果我想在我的脚本中一个接一个地使用所有结果,我该怎么办?我在一个返回许多结果的证书文件夹中greder .der。我想使用grep命令中列出的每个.der证书。如何从grep结果中另外使用一个文件?

3 个答案:

答案 0 :(得分:1)

您实际上是在浏览内容还是文件名?如果是文件名,最好使用find命令:

find /path/to/folder -name "*.der" -exec some other commands {} ";"

一般来说应该更快。

答案 1 :(得分:0)

一种方法是使用grep -l。这可确保您只获得一次文件。 -l仅用于打印每个文件的名称,而不是匹配。

然后,您可以循环结果:

for file in `grep ....`
do
    # work on $file
done

另请注意,如果文件名中包含空格,则存在大量可能的问题。请参阅Unix& Linux stackexchange上的Looping through files with spaces in the names

答案 2 :(得分:0)

您可以将输出用作for循环的一部分,例如:

for cert in $(grep '\.der' *) ; do
    echo ${cert} # or something else
done

当然,如果那些der内容实际上是文件(并且您使用ls | grep来获取它们),则可以直接使用这些文件:

for cert in *.der ; do
    echo ${cert} # or something else
done

在这两种情况下,您可能需要注意嵌入空格的参数。