众所周知,windows底下的搜索功能极其简单,支持部分文件名搜索,也支持文件内容搜索,但这种文件只局限于txt、word等简单类型,而且速度巨慢无比,相比而言linux的搜索功能就强大多了,不仅支持文件名模糊搜索,而且可以搜索任何文件内的内容,甚至是二进制文件。下面我简单总结一下linux下的两种最常用的搜索命令。
1、搜索文件用 find :
find [path]home -name [filename]
这是最简单的一种用法,意思是在path路径下搜索文件名为filename的文件,默认情况下会递归地搜索path路径下的所有目录。
find /home -name ‘*partname’
在home目录下搜索文件名后半本部分为partname的文件。
find /home -name ‘partname*’
在home目录下搜索文件名前半本部分为partname的文件。
find /home -name ‘*partname*’
在home目录下搜索文件名中包含partname的文件。
find /home -name “filename” –ls
在home目录下搜索文件名为filename的文件并将其详细信息打印出来。
其他不常用的参数如下:
-amin n 查找系统中最后N分钟访问的文件 -atime n 查找系统中最后n*24小时访问的文件 -cmin n 查找系统中最后n分钟被改变状态的文件 -ctime n 查找系统中最后n*24小时被改变状态的文件 -empty 查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹 -false 查找系统中总是错误的文件 -fstype type 查找系统中存在于指定文件系统的文件,例如:ext2. -gid n 查找系统中文件数字组 ID 为 n的文件 -group gname 查找系统中文件属于gnam文件组,并且指定组和ID的文件 -daystart 测试系统从今天开始24小时以内的文件,用法类似-amin -depth 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容 -follow 遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询 -help 显示命令摘要 -maxdepth levels 在某个层次的目录中按照递减方法查找 -mount 不在文件系统目录中查找, 用法类似 -xdev. -noleaf 禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找 -version 打印版本数字 -exec command 查找并执行命令 -fprint file 打印文件完整文件名 -fprint0 file 打印文件完整文件名包括空的文件 -fprintf file format 打印文件格式 -ok command 给用户命令执行操作,根据用户的Y确认输入执行 -printf format 打印文件格式 -ls 打印同种文件格式的文件
比较windows跟linux的差异:
下图的搜索windows下花了3秒
linux下1秒都不到
2、搜索内容用 grep :
grep [content] [file] -r
这是最简单的一种用法,意思是在file文件内搜索内容为content位置。
grep the_content * -r
搜索当前路径下的所有文件,-r的意思递归地搜索路径下的所有目录,如果不加-r,只搜索当前目录内的文件内容。
grep the_content * -i
-i 意思是忽略大小写。
grep “<? php the_content” * -r
之所以这里加了双引号,是因为搜索的内容中包含特殊字符。
windows跟linux的差异:
如下图所示windows下搜了5分钟,结果还是没搜到
linux下仅用了1秒,全搜索到了:
3、最常用格式小结:
在当前目录搜索index.html文件的位置:
find . -name index.html
在当前目录下所有子目录以及文件中搜索还有字符串”psss”的文件:
grep psss * -r
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。