bash find chained to a grep which then prints
I have a series of index files for some data files which basically take the format
index file : asdfg.log.1234.2345.index
data file : asdfg.log
The idea is to do a search of all the index files. If the value XXXX appears in an index file, go and grep its corresponding data file and print out the line in the data file where the value XXXX appears.
So far I can simply search the index files for the value XXXX eg
find . -name "*.index" | xargs grep "XXXX" // Gives me a list of the index files with XXXX in them
How do I take the index file match and then grep its corresponding data file?
Does this do the trick?
find . -name '*.index' |
xargs grep -l "XXXX" |
sed 's/.log.*/.log/' |
xargs grep "XXXX"
The find
command is from your example. The first xargs grep
lists just the (index) file names. The sed
maps the file names to the data file names. The second xargs grep
then scans the data files.
You might want to insert a sort -u
step after the sed
step.
grep -l "XXXX" *.index | while read -r FOUND
do
if [ -f "${FOUND%.log*}log" ];then
grep "XXXX" "$FOUND"
fi
done
链接地址: http://www.djcxy.com/p/2068.html
上一篇: 如果一个python命令行脚本?
下一篇: bash找到链接到一个然后打印的grep