我如何搜索名为“Onderh”的单词?我想要进行高级搜索,例如:以“Onderh”开头的行或包含“Onderh”的行。
注意:本地备份目录,包含每天的 MySQL 快照“database.sql(文件大小:81902272)”。我需要在该文件中应用搜索。
[me@www win]$ ls
2011-03-01 2011-03-04 2011-03-07 2011-03-10 2011-03-13 2011-03-16 2011-03-19 2011-03-22 2011-03-25 2011-03-28 2011-03-31 2011-04-03 2011-04-06
2011-03-02 2011-03-05 2011-03-08 2011-03-11 2011-03-14 2011-03-17 2011-03-20 2011-03-23 2011-03-26 2011-03-29 2011-04-01 2011-04-04 2011-04-07
2011-03-03 2011-03-06 2011-03-09 2011-03-12 2011-03-15 2011-03-18 2011-03-21 2011-03-24 2011-03-27 2011-03-30 2011-04-02 2011-04-05 2011-04-08
[me@www 2011-04-08]$ ll
total 80092
-rw-r--r-- 1 root root 81902272 Apr 8 01:00 database.sql
drwxr-xr-x 99 root root 12288 Apr 8 01:00 etc
drwxr-xr-x 4 root root 4096 Apr 8 01:00 home
drwxr-xr-x 10 root root 4096 Apr 8 01:00 html
drwxr-xr-x 14 root root 4096 Apr 8 01:00 postfixadmin-2.3
答案1
如果您想检查所有这些目录,请尝试:
[me@www win]$ grep -n ^Onderh */database.sql
查找以 Onderh 开头的行(-n 标志显示行号)。 是^
一个特殊字符,用于将匹配项锚定到行首 - 如果您想在行中的任何位置找到它,请将其删除。
确认如果您有更复杂的要求,也可能值得研究。例如,如果您感兴趣的 sql 文件组织得不是很好,ack 将能够在整个目录结构中仅搜索 .sql 文件。
答案2
如果文件是文本文件,则可以使用带有正则表达式标志的 grep。
grep -R -E "^Onderh" *
grep -R "Onderh" *
首先将搜索以 onderh 开头的行,其次将搜索包含该行的所有行。