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.如何找到文件里面指定的内容
比如test.tpl里面的结构如下,需要找到components对应的行,行的值包含有'test-ui'的行才输出,找到内容后输出到指定的新文件里面:

<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命令实现思路或者简要的脚本实现,感谢

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

# app1文件夹包含components的每一行,取字段名,进行默认排序。
app1  a-div a-p a-span   
app2  a-div a-p a-span
...
阅读 4.6k
1 个回答

可以用find结合sed找到指定内容:

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

命令执行完将在当前目录生成file文件,保存所有的components内容。
OSX试试这样:

find home/work/src/app* -name test.tpl|xargs -I{} sed -n '/components/{
:a
N
/}/!ba
p
}' {} | grep 'test-ui' > file
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题