如何利用shell从文件中读取文件路径

sh/bash/dash/ksh/zsh等Shell脚本
nishizawa23
帖子: 27
注册时间: 2010-07-12 15:32

如何利用shell从文件中读取文件路径

#1

帖子 nishizawa23 » 2010-08-12 16:48

如题
比如文件tagsfile中有若干
#include <xxx.h>

怎么用bash语言从文件按tagsfile中读取xxx.h的路径出来?
哪位高手知道,或者探讨一下 :em01
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 如何利用shell从文件中读取文件路径

#2

帖子 trigger » 2010-08-12 17:00

描述清楚一点,每行一个?都是同一格式?
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
nishizawa23
帖子: 27
注册时间: 2010-07-12 15:32

Re: 如何利用shell从文件中读取文件路径

#3

帖子 nishizawa23 » 2010-08-12 17:23

是这样
tagsfile里面有全部都是.c文件,由
find . -name "*.c" > tagsfile生成
如下
...
./lib_microblaze/cache.c
./lib_microblaze/microblaze_linux.c
./lib_microblaze/board.c
...

我想在这些.c文件中找出他们包含的头文件,并显示头文件的路径

现在折中的方法是
find . -name "*.c" | xargs grep ".*.h>$" | sed 's/\(.*\).<//g' | sed 's/>$//g'
可以显示头文件名字

version.h
net.h
asm/initcalls.h
asm/sections.h
common.h
command.h
image.h
zlib.h
asm/byteorder.h
asm/addrspace.h
asm/io.h
asm/setup.h
asm/arch/platform.h

但是不能显示路径,这个怎么解决?
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 如何利用shell从文件中读取文件路径

#4

帖子 trigger » 2010-08-12 18:00

还是没看明白,简化一下,你看我理解对不对
tagsfile文件格式如下:
./lib_microblaze/cache.c
./lib_microblaze/microblaze_linux.c
./lib_microblaze/board.c
cache.c以及其他每个.c文件中有形如
#include <xxx.h>
的行若干(还是说每个.c只有一个#include <xxx.h>且在首行?)
要求找到所有xxx.h的绝对路径并分行输出
是这意思吗?
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
nishizawa23
帖子: 27
注册时间: 2010-07-12 15:32

Re: 如何利用shell从文件中读取文件路径

#5

帖子 nishizawa23 » 2010-08-12 18:11

对,每个.c文件含有若干个#include <xxx.h>
想显示xxx.h的绝对路径
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 如何利用shell从文件中读取文件路径

#6

帖子 tusooa » 2010-08-12 23:58

代码: 全选

find /usr/include/ -name xxx.h

代码: 全选

] ls -ld //
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 如何利用shell从文件中读取文件路径

#7

帖子 trigger » 2010-08-13 9:09

find . -name "*.c" | xargs grep ".*.h>$" | sed 's/\(.*\).<//g' | sed 's/>$//g' > ufile
for i in ufile
do
locate `basename $i`
done
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 如何利用shell从文件中读取文件路径

#8

帖子 eexpress » 2010-08-13 9:48

locate `basename $i`

:em20 :em20
● 鸣学
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 如何利用shell从文件中读取文件路径

#9

帖子 trigger » 2010-08-13 10:29

eexpress 写了:locate `basename $i`

:em20 :em20
我是怕带路径的东西直接locate有不可预知的问题 :em04
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 如何利用shell从文件中读取文件路径

#10

帖子 eexpress » 2010-08-13 10:36

这样locate。说不定巨多的结果刷屏幕的哦。
● 鸣学
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 如何利用shell从文件中读取文件路径

#11

帖子 trigger » 2010-08-13 10:41

eexpress 写了:这样locate。说不定巨多的结果刷屏幕的哦。
结果肯定巨多 :em04
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
nishizawa23
帖子: 27
注册时间: 2010-07-12 15:32

Re: 如何利用shell从文件中读取文件路径

#12

帖子 nishizawa23 » 2010-08-13 11:17

昨晚停电,虚拟机坏掉了,修复半天还是不行,准备重做一个,郁闷,过段时间再试试,谢谢你们
nishizawa23
帖子: 27
注册时间: 2010-07-12 15:32

Re: 如何利用shell从文件中读取文件路径

#13

帖子 nishizawa23 » 2010-08-13 13:32

不行哎
for i in ufile
do
locate `basename $i`
done
没有输出
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 如何利用shell从文件中读取文件路径

#14

帖子 trigger » 2010-08-13 14:02

for i in `cat ufile`; do locate `basename $i`; done
:em04
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
nishizawa23
帖子: 27
注册时间: 2010-07-12 15:32

Re: 如何利用shell从文件中读取文件路径

#15

帖子 nishizawa23 » 2010-08-13 14:13

还是不行
应该是把cat ufile 认作字符串了
回复