日期:2014-05-16  浏览次数:20629 次

linux查找文件或字符串的命令

1. linux下面用于查到的命令有哪些?

是不是有很多呀,这个我还没做过统计和调查,不过这篇博客只介绍grep与find的最基本应用。

grep和find功能都是相当的强大,这里也只是介绍这两个命令的九牛一毛而已。

 

2. grep的简单小应用?

(1)如果在给定的文件中搜索某个字符串,直接grep “main” ./main.c即可;

(2)如果你要搜索某个特定的字符串,而不确定这个字符串可能会在哪个文件中出现,

那只能在某个大的目录下递归搜索:grep -r "main" ./;

(3)如果只指定-r来搜索,有时候可能会打印出很多无用的错误的信息,这会严重干扰你在

搜索结果中查找你想要的信息。所以我们要用grep -rs "main" ./,使用-s选项可以帮助我们

将这些因为文件不存在或者文件不可读而打印出来的错误信息统统去除掉;

(4)如果你想知道字符串所在的行号,那一定要指定-n选项:grep -nrs "main" ./;

(5)可是很多时候你按照上面指定的条件进行搜索,在搜索结果中可能仍然有很多不是你想要的。

比如你要搜索的字符串是"main",而要搜索结果中你可能会看到很多诸如"main_function",

"mainly"等等这些包含"main"的更长的字符串。此时我们就需要借助于-w这个命令选项来过滤。

grep -nrws "main" ./

 

3. find的简单小应用?

目前我遇到的应用就是在整个系统成千上万的文件中去找某个特定的文件。

find ./ -name "libtest.so"

这样find命令就会在指定的path下递归查找某个特定的文件。

当然find的实际功能是非常非常大的,比如:

find ./ -perm 777

用来在当前path下递归查找所有权限为777的文件。

 

4. find与grep无敌组合?

如果你查找一个字符串要把整个系统的所有文件都过滤一遍,效率是不是太低了点?

我们可以用类似于如下的命令来提高效率:

find ./ -name "*.c" | xargs grep "main"

这样做的目的就是在指定path下先缩写范围到所有的.c文件,然后在.c文件中查找

特定的字符串。

 

以上纯属个人的一点小小心得之总结。如有雷同,纯属巧合。

1楼boyxulin1986昨天 21:27
自己必须顶自己