shell 命令 求解

politeness1983 2011-07-12 05:48:19
查找路径下所有包含某个字符串的文件, 并且打印出文件路径+文件名, shell下有这样的命令吗?

find . -name Android.mk |xargs grep "LOCAL_CERTIFICATE"

比如这个命令, 是查找当前路径下所有名为Android.mk的文件中, 包含 "LOCAL_CERTIFICATE"的文件, 但是它打印出的是文件名+内容, 而我只希望打印出文件名
...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
politeness1983 2011-07-13
  • 打赏
  • 举报
回复
谢谢啦
heshanxingzhe 2011-07-13
  • 打赏
  • 举报
回复
#!/bin/bash
#第一步
file_name=$(find $1/packages -name Android.mk |xargs grep "LOCAL_CERTIFICATE" | gawk -F ":" '{print $1}')
#第二步
for val in $file_name
do
grep "LOCAL_CERTIFICATE" $val
done
昵称很不好取 2011-07-13
  • 打赏
  • 举报
回复
#!/bin/bash

myvar=`find . -name "Android.mk"`
for i in $myvar
do
myvar2=`grep "LOCAL_CERTIFICATE" $i`
if [ -z $myvar2 ];then
:
else
echo "$i $myvar2"
fi
done
politeness1983 2011-07-13
  • 打赏
  • 举报
回复
其实我的需求分为两步, 第一步: 找到所有包含"LOCAL_CERTIFICATE"这个字串的文件. 第二步, 从这些文件里找到我需要的某些内容.

但是现在通过第一步得到了这些文件名之后, 不知道怎么通过一个循环, 依次打开他们, 搜索我需要的内容并输出.
chinasingle 2011-07-12
  • 打赏
  • 举报
回复
find $1/packages -name Android.mk -exec cat {} \;|grep LOCAL_CERTIFICATE
thenshesaid 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 politeness1983 的回复:]
用这个命令可以打印出来:
find $1/packages -name Android.mk |xargs grep "LOCAL_CERTIFICATE" | gawk -F ":" '{print $1}'
结果是按行输出每个符合条件的文件. 接下来要做的是, 依次打开每个文件, 从文件中找到符合条件的字符串, 并打印出来. 请教这步要怎么写?

输出结果是类似于:
/package……
[/Quote]
找到字符串打印出来不就是grep做的事情吗
politeness1983 2011-07-12
  • 打赏
  • 举报
回复
用这个命令可以打印出来:
find $1/packages -name Android.mk |xargs grep "LOCAL_CERTIFICATE" | gawk -F ":" '{print $1}'
结果是按行输出每个符合条件的文件. 接下来要做的是, 依次打开每个文件, 从文件中找到符合条件的字符串, 并打印出来. 请教这步要怎么写?

输出结果是类似于:
/packages/providers/DownloadProvider/tests/Android.mk
/packages/providers/DownloadProvider/ui/Android.mk
/packages/providers/DrmProvider/Android.mk
/packages/providers/MediaProvider/Android.mk

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧