按名称内容中的模式搜索文件

使用 Linux 命令行(shell)的人的常见任务是搜索具有特定名称或包含特定文本的文件/目录。为了实现这个目的,你应该熟悉 2 个命令:

按名称查找文件

find /var/www -name '*.css'

这将打印出/var/www 下以 .css 结尾的所有文件的完整路径/文件名。输出示例:

/var/www/html/text-cursor.css
/var/www/html/style.css

欲了解更多信息:

man find

查找包含文本的文件

grep font /var/www/html/style.css 

这将打印包含指定文件中的图案 font 的所有行。输出示例:

font-weight: bold;
font-family: monospace;

另一个例子:

grep font /var/www/html/

这不像你希望的那样有效。你得到:

grep: /var/www/html/: Is a directory

使用 -R 选项,你需要递归地使用 grep 使其工作:

grep -R font /var/www/html/

嘿好! 看看这个的输出:

/var/www/html/admin/index.php:  echo '<font color=red><b>Error: no dice</b></font><br/>';
/var/www/html/admin/index.php:  echo '<font color=red><b>Error: try again</b></font><br/>';
/var/www/html/style.css:  font-weight: bold;
/var/www/html/style.css:  font-family: monospace;

请注意,当 grep 匹配多个文件时,它会在匹配的行前面加上文件名。如果需要,你可以使用 -h 选项来摆脱它。

欲了解更多信息:

man grep