一个目录里面一层层的子目录很多,文件也很多,想从中搜索到一定模式的文件名以及它们所处的子目录可以借助于 ls -R 与 sed 来完成。比如,有一个源码目录,我想从中搜索到所有以大写的S为扩展名的文件(即汇编源码文件的一种),以及他们所处的子目录,由于只是一小部分子目录中有.S文件,所以需要过滤才看得清楚。
第一步:
# ls -R 列出当前目录下所有的子目录名与文件名
第二步:
# sed '/\.S$\|^\.\//!d' 过滤出.S文件及所有的以./为首的子目录名
第三步
# sed -n '/\.S$/{x;p;g;p;d};h' 在前面过滤的基础上,再把.S文件名与它们的上一行即它们所在的目录名输出
三步连起来就是这样:
# ls -R | sed '/\.S$\|^\.\//!d' | sed -n '/\.S$/{x;p;g;p;d};h'
阅读(2776) | 评论(0) | 转发(0) |