开发者

Question on grep

Out of many results returned by grepping a particular pattern, if I want to use all the results one after the other in my script, how can I go about it?For e.g. I grep for .der i开发者_运维问答n a certificate folder which returns many results. I want to use each and every .der certificate listed from the grep command. How can I use one file after the other out of the grep result?


Are you actually grepping content, or just filenames? If it's file names, you'd be better off using the find command:

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

It should be quicker in general.


One way is to use grep -l. This ensures you only get every file once. -l is used to print the name of each file only, not the matches.

Then, you can loop on the results:

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

Also note that if you have spaces in your filenames, there is a ton of possible issues. See Looping through files with spaces in the names on the Unix&Linux stackexchange.


You can use the output as part of a for loop, something like:

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

Of course, if those der things are actually files (and you're using ls | grep to get them), you can directly use the files:

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

In both cases, you may need to watch out for arguments with embedded spaces.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜