在Linux中,可以使用grep
命令来搜索文件中的字符,linux搜索文字。linux搜索字符基本格式如下:linux服务器查找字符,查询字符
grep [options] pattern [file...]
例如,如果在给定的文件中搜索某个字符串,可以直接使用以下命令:
grep -r "main" ./
如果要在特定目录下递归搜索某个特定的字符串,可以使用以下命令:
grep -r "main" ./
如果只指定-r来搜索,可能会打印出很多无用的错误信息,这会干扰在搜索结果中查找所需的信息。这时可以使用-s选项来去除这些错误信息:
grep -rs "main" ./
如果想要知道字符串所在的行号,那一定要指定-n选项:
grep -nrs "main" ./
下面举例
我要搜索目录a下有没文件含有b这个字符
grep -r "b" /path/to/directorya
其中,-r表示递归搜索,/path/to/directorya为要搜索的目录a的路径。执行该命令后,会输出所有包含b这个字符的文件名及其所在行。
如果我已经在a目录下了
grep -r "b" .
这个命令会递归搜索当前目录下的所有文件,并输出所有包含b这个字符的文件名及其所在行。
怎么排除txt格式文件?
find . -type f ! -name '*.txt' -exec grep -H "b" {} \;
这里是命令的解释:
find .
:从当前目录开始搜索。-type f
:只搜索文件,不搜索目录。! -name '*.txt'
:排除所有.txt
文件。-exec
:对每个找到的文件执行指定的命令。grep -H "b" {}
:在找到的文件中执行grep
命令,查找包含 “b” 的行。\;
:结束-exec
参数。
注意:这个命令会搜索所有文件,除了 .txt
文件。如果你只想搜索特定的其他文件类型,你可以修改 -name '*.txt'
部分,用其他通配符或模式来排除。
排除txt文件和html文件
find . -type f ! \( -name '*.txt' -o -name '*.html' \) -exec grep -H "b" {} +
只显示文件名而不是显示匹配的行,您可以使用grep
的-l
选项。这样,grep
会只输出包含匹配文本的文件名。
find . -type f ! \( -name '*.txt' -o -name '*.html' \) -exec grep -l "$sb" {} +