鍍金池/ 問答/Linux/ linux遍歷文件夾指定文件并讀取文件指定字段

linux遍歷文件夾指定文件并讀取文件指定字段

主要疑問
1.如何遍歷文件夾下面的指定文件,這里想遍歷文件夾src下的所有app文件夾找到所有的test.tpl文件
比如:
有文件夾路徑

      home/work/src/app1
      home/work/src/app2
      home/work/src/app3
       ....
       

每個app*文件夾下有多個文件

app1/test.html
app1/mock.js
app1/test.css
app1/test.tpl

2.如何找到文件里面指定的內(nèi)容
比如test.tpl里面的結(jié)構(gòu)如下,需要找到components對應(yīng)的行,行的值包含有'test-ui'的行才輸出,找到內(nèi)容后輸出到指定的新文件里面:

<div>
    <h2></h2>
    <h2>test</h2>
</div>

<script type="config">
    {
        test: [
            'extend_data','ajax'
        ],
        data: {
            pageNum: 0,
            list: []  
        },
        components: {
            'a-div': 'test-ui/Video/Video',
            'a-div': 'test-ui/Video/Video',
            'hahaha-div': 'a-ui/Video/Video',
        }
    }
</script>



求大佬指教,說清楚linux命令實現(xiàn)思路或者簡要的腳本實現(xiàn),感謝

0105新增。如果需要把文件夾的名稱寫入到文件里面,并且修改每行的格式。如下格式

# app1文件夾包含components的每一行,取字段名,進行默認排序。
app1  a-div a-p a-span   
app2  a-div a-p a-span
...
回答
編輯回答
祈歡

可以用find結(jié)合sed找到指定內(nèi)容:

#找到所有appxxx目錄內(nèi)的test.tpl,并輸出components內(nèi)容到新文件
find home/work/src/app* -name test.tpl|xargs -I{} sed -n '/components/{:a;N;/}/!ba;p}' {} > file

命令執(zhí)行完將在當前目錄生成file文件,保存所有的components內(nèi)容。
OSX試試這樣:

find home/work/src/app* -name test.tpl|xargs -I{} sed -n '/components/{
:a
N
/}/!ba
p
}' {} | grep 'test-ui' > file
2017年11月17日 06:17