linux 下将ffmpeg源码目录列表转换存放到csv文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhaolove/article/details/44923833

声明 : 此文档只做学习交流使用,请勿用作其他商业用途
author : 朝阳_tony
E-mail : [email protected]
Create Date: 2015-4-7 17:38:08 Monday
Last Change: 2015-4-7 19:25:35 Monday
转载请注明出处:http://blog.csdn.net/linzhaolover

摘要

tony, 你看ffmpeg的源码目录下有很多x86的文件还有ppc的文件,能不能帮我统计一下,然后放在execl表格里,要统计
1、总共有多少各x86和ppc目录,
2、每个目录有多少文件
3、每个目录有多少各c文件
这可如何是好,开动脑筋,思考一下,
遍历文件莫过find命令,假设每个目录一列,那就要用paste进行列粘贴,能让execl识别的文件,csv文件是不错的选择,好接下来一个问题一个问题解决,

查找目录

# find ./ -name 'x86' -type d
./libavfilter/x86
./libswscale/x86
./libavresample/x86
./libswresample/x86
./libavutil/x86
./libavcodec/x86
# find ./ -name 'ppc' -type d
./libswscale/ppc
./libavutil/ppc
./libavcodec/ppc

还行,ffmpeg下就这几个x86和ppc的目录,手指头都能数过来,
find 命令简单介绍,
./ 是之在什么目录下进行查找
-name ‘x86’ 是指定被查找的对象
-type d 查找的类型为目录
如果想查找文件就用 -type f

查找每个目录下的文件

虽然目录不多,如果用ls去遍历每个目录,亲,手指有点类啊,
简单而重复的工作就让机器去做吧, 上demo

#!/bin/bash
for  alldir in x86 ppc
do
    ds=$( find ./  -name "${alldir}" -type d )
    for  d  in ${ds[@]}
    do
        echo "$d"
        find $d -name '*.c'  -type f
    done
done

第一层for循环为了是遍历两个目录
第二层循环是为乐遍历每个目录下的文件,这次我先找后缀为点c文件
如果想找所有文件,就将点c去掉,只留一个星号

./libavfilter/x86
./libavfilter/x86/vf_spp.c
./libavfilter/x86/vf_gradfun_init.c
./libavfilter/x86/vf_hqdn3d_init.c
./libavfilter/x86/vf_tinterlace_init.c
./libavfilter/x86/vf_pullup_init.c
。。。。。。。。
./libavcodec/ppc/vorbisdsp_altivec.c
./libavcodec/ppc/mpegvideo_altivec.c
./libavcodec/ppc/h264chroma_template.c
./libavcodec/ppc/dct-test.c
./libavcodec/ppc/huffyuvdsp_altivec.c
./libavcodec/ppc/audiodsp.c
./libavcodec/ppc/vp8dsp_altivec.c
./libavcodec/ppc/h264qpel_template.c
./libavcodec/ppc/blockdsp.c
./libavcodec/ppc/h264chroma_init.c
./libavcodec/ppc/lossless_audiodsp_altivec.c
./libavcodec/ppc/vc1dsp_altivec.c

文章篇幅有限,中间略去一些,
目录找到了,文件也找到了,该怎样转成execl文件呢,难不成要一个一个粘贴进去吗,

制作csv文件

最烦复制粘贴了,还是让程序去做吧

#!/bin/bash

>   a.tmp
>   b.tmp
>   c.tmp
for  alldir in x86 ppc
do
    ds=$( find ./  -name "${alldir}" -type d )
    for  d  in ${ds[@]}
    do
        echo "$d"
        find $d -name '*.c'  -type f > a.tmp
        paste -d ',' b.tmp a.tmp > c.tmp
        mv c.tmp b.tmp
    done
done
mv b.tmp b.csv

最上面三行是为了一开始创建3个临时文件,
首先将遍历到的目录中文件信息保存到a.tmp文件中,
用paste 命令,以逗号为分割符,将a.tmp文件中的每列粘贴到b.tmp的后面,然后保存到c.tmp中,csv文件,大多是以逗号为分割符的
将c.tmp再修改为b.tmp方便下次合并b.tmp 和a.tmp ,
依次这样循环下去,最后结束时,将b.tmp 改名未b.csv,这就是我们要的csv文件,放到execl中酒可以识别了,

有图有真相

这里写图片描述

总结:

    简单重复的事情就让机器去做吧,我去锻炼减肥了,哈哈

猜你喜欢

转载自blog.csdn.net/linzhaolove/article/details/44923833