linux文件搜索
一. grep命令
在linux中怎么搜索,查找文件里面的内容呢,我这里做一个简单的归纳总结,都是一些平时常用的命令
1 搜索某个文件是否包含字符串
grep Seccomp status
grep “Seccomp” status这里加一个-n参数可以查找到存在哪行
2 搜索多个文件是否包含某个字符串
grep “search content” filename1 filename2… filenamen
grep “search content” *.sql
3: 如果搜索时需要忽略大小写问题,可以使用参数-i
grep -n -i “seccomp” status
4:搜索、查找匹配的行数:
$ grep -c “被查找的字符串” 文件名
5递归查询,某文件目录下的所有文件
grep -r “seccoomp” /proc
二 find命令
1. 列出当前目录和子目录下的所有文件
这个命令会列出当前目录以及子目录下的所有文件。
$ find
该命令与以下命令效果相同
$ find .
$ find . -print
2. 查找特殊的目录或路径
下面的命令会查找当前目录下 test 文件夹中的文件,默认列出所有文件。
$ find ./test
./test
./test/abc.txt
./test/subdir
./test/subdir/how.php
./test/cool.php
下面的命令用于查找指定名称的文件。
$ find ./test -name "abc.txt"
./test/abc.txt
也可以使用通配符
$ find ./test -name "*.php"
./test/subdir/how.php
./test/cool.php
请注意,所有的文件夹都会被递归地查找。所以,这是用于查找指定扩展名文件的一种非常强大的方式。
如果我们尝试搜索 / 文件夹,也就是根目录,就会搜索整个文件系统,包括挂载的设备以及网络存储设备。所以请小心使用。当然,你随时可以通过按 Ctrl + C 来终止命令。
注意:当指定文件夹的时候(例如示例中的"./test"文件夹),忽略末尾的斜杠是没有问题的。但是,如果文件夹是一个指向其它位置的链接(symlink)时,你必须在末尾写上斜杠才能使find命令正常工作(find ./test/)。
忽略大小写
在查找文件名时,忽略大小写往往非常有用。要忽略大小写,只需要使用 iname 选项,而不是 name 选项。
$ find ./test -iname "*.Php"
./test/subdir/how.php
./test/cool.php
总是用双引号或单引号来包围匹配模式(文件名参数),这非常有用。不这样做的话有时也能正常工作,有时也可能会产生奇怪的结果。
3. 限制目录查找的深度
find 命令默认会递归查找整个目录树,而这非常消耗时间和资源。好在目录查找的深度可以手动指定。例如我们只想查找一到两层以内的子目录,可以通过 maxdepth 选项来指定。