2011-08-02 70 views
0

如果我想在腳本中一個接一個地使用所有結果,那麼通過刷新特定模式返回的結果之外,我該如何去解決它?我在證書文件夾中grep for .der會返回許多結果。我想要使​​用grep命令列出的每個.der證書。如何在grep結果之後使用另一個文件?關於grep的問題

+1

結帳xargs(man xargs)。 –

回答

0

一種方法是使用grep -l。這確保您只能獲取每個文件一次。 -l僅用於打印每個文件的名稱,而不是匹配。

然後,您可以循環的結果:

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

還要注意的是,如果你在你的文件名空間,有一噸的可能的問題。請參閱Unix的& Linux堆棧交換中的Looping through files with spaces in the names

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 

在這兩種情況下,你可能需要注意嵌入空格的參數。

1

你實際上在對內容進行格式化,或者只是文件名?如果是文件名,你會更好使用find命令:

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

應該更快一般。