ubuntu中在终端下如何查找具有某一特定字符串的文件?
我只知道用find-name文件名查找文件,但是现在想根据文件中的内容来查找,怎么做呢?比如如何找到具有"main"这个字符串的文件的位置?...
我只知道用find -name 文件名查找文件,但是现在想根据文件中的内容来查找,怎么做呢?比如如何找到具有"main"这个字符串的文件的位置?
展开
展开全部
在一个文件或多个文件中搜索指定的文本字符串。搜索指定的文件后,find 将显示包含指定字符串的所有行。
语法
find [/v] [/c] [/n] [/i]"String" [[Drive:][Path]FileName[...]]
参数
/v
显示不包含指定 String 的所有行。
/c
计数包含指定 String 的行并显示总行数。
/n
将文件行号置于每行开头。
/i
指定搜索不区分大小写。
" String "
必需参数。指定要搜索的字符组。必须用引号将 String 引起来(即 "String")。
[Drive:][Path] FileName
指定要在其中搜索指定字符串的文件的位置和名称。
/?
在命令提示符下显示帮助。
注释
指定字符串
如果不使用 /i,find 将精确搜索指定的 String。例如,find 命令认为字符“a”和“A”是不同的。但是,如果使用/i,find 不区分大小写,并将“a”和“A”视为同一个字符。
如果要搜索的字符串包含引号,必须将包含在字符串中的引号再用引号引起来(即"StringContaining""QuotationMarks")。
将 find 用作筛选器
如果省略文件名,find 将用作筛选器,从标准输入源(通常是键盘、管道或重定向的文件)得到输入,然后显示包含 String 的所有行。
命令语法次序
可以按任何顺序键入 find 命令的参数和命令行选项。
使用通配符
在 find 命令中指定的文件名或扩展名中不能使用通配符(* 和 ?)。要搜索使用通配符指定的一组文件中的字符串,可以在 for 命令中使用 find 命令。
将 /v 或 /n 与 /c 一起使用
如果在相同的命令行中使用 /c 和 /v,find 将显示不包含指定字符串的行数。如果在相同的命令行中指定/c 和 /n,find 将忽略 /n。
针对回车使用 find
find 命令不能识别回车。当使用 find 在包含回车的文件中搜索文本时,必须将搜索字符串限制在可以在两个回车之间找到的文本,也就是不能被回车中断的字符串。例如,“tax”与“file”之间出现回车时,find 不会报告找到“tax file”字符串。
语法
find [/v] [/c] [/n] [/i]"String" [[Drive:][Path]FileName[...]]
参数
/v
显示不包含指定 String 的所有行。
/c
计数包含指定 String 的行并显示总行数。
/n
将文件行号置于每行开头。
/i
指定搜索不区分大小写。
" String "
必需参数。指定要搜索的字符组。必须用引号将 String 引起来(即 "String")。
[Drive:][Path] FileName
指定要在其中搜索指定字符串的文件的位置和名称。
/?
在命令提示符下显示帮助。
注释
指定字符串
如果不使用 /i,find 将精确搜索指定的 String。例如,find 命令认为字符“a”和“A”是不同的。但是,如果使用/i,find 不区分大小写,并将“a”和“A”视为同一个字符。
如果要搜索的字符串包含引号,必须将包含在字符串中的引号再用引号引起来(即"StringContaining""QuotationMarks")。
将 find 用作筛选器
如果省略文件名,find 将用作筛选器,从标准输入源(通常是键盘、管道或重定向的文件)得到输入,然后显示包含 String 的所有行。
命令语法次序
可以按任何顺序键入 find 命令的参数和命令行选项。
使用通配符
在 find 命令中指定的文件名或扩展名中不能使用通配符(* 和 ?)。要搜索使用通配符指定的一组文件中的字符串,可以在 for 命令中使用 find 命令。
将 /v 或 /n 与 /c 一起使用
如果在相同的命令行中使用 /c 和 /v,find 将显示不包含指定字符串的行数。如果在相同的命令行中指定/c 和 /n,find 将忽略 /n。
针对回车使用 find
find 命令不能识别回车。当使用 find 在包含回车的文件中搜索文本时,必须将搜索字符串限制在可以在两个回车之间找到的文本,也就是不能被回车中断的字符串。例如,“tax”与“file”之间出现回车时,find 不会报告找到“tax file”字符串。
展开全部
比如查找 /home/znsys/ 下所有含 VoIP 的文件名称:
grep -l 'VoIP' /home/znsys/*
比如查找 /home/znsys/ 文件夹下的所有第三层目录内所有文件中包含 “networking" 的行:
如这些目录:
/home/znsys/client_1/data/
/home/znsys/client_2/data/
/home/znsys/vendor_1/data/
命令为:
grep -i /home/znsys/*/data/* 'networking'
具体可以 grep --help
grep -l 'VoIP' /home/znsys/*
比如查找 /home/znsys/ 文件夹下的所有第三层目录内所有文件中包含 “networking" 的行:
如这些目录:
/home/znsys/client_1/data/
/home/znsys/client_2/data/
/home/znsys/vendor_1/data/
命令为:
grep -i /home/znsys/*/data/* 'networking'
具体可以 grep --help
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
grep main *
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-10-13
展开全部
搜索啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询