Linux文件查找

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

http://www.cnblogs.com/shijiaqi1066/p/4076158.html

 

 

 

Linux文件查找相关的命令一般涉及两个命令:

  • locate
  • find

 

 

locate

格式:

locate 文件名

locate 正则表达式

 

说明:

locate不是搜索文件系统,而是从一个数据库中搜索。所以locate命令的搜索速度非常快。

wps1E73.tmp

 

但locate命令找不到刚创建的新文件。新文件的信息不会实时保存到数据库。使用updatedb命令,会把文件系统的信息保存至数据库,updatedb一般是每天运行一次。

updatedb命令可以手动运行,但updatedb命令只能由root用户运行。

 

例:

locate vimrc

 

 

find命令

find命令用于查找文件。注意目录也是文件。

基本格式:

find 查找目录 查找条件

指定了查找目录,find会查找该目录下所有文件,其子目录中的内容也会被查找。

 

若不加查找条件,则查找指定目录下的所有文件(包括目录)。

查找当前目录下所有的内容,包括目录与文件:

find .

 

 

-name选项:按名字查找。建议使用双引号。

find . -name "*.txt"

 

-type选项:按类型查找

普通文件:f (ls命令下,显示的是 - )

符号链接:

 

查找当前目录所有的普通文件:

find . -type f

 

查找当前目录所有的目录:

find . -type d

 

-size选项:按文件大小查找。size选项可以配合符号 + -  一起使用。

+ 表示大于指定的文件大小数值。

- 表示小于指定的文件大小数值。

文件大小的数值部分可以使用2M,8k这样字面量来表示。

 

 

-ctime:按文件状态改变的时间(单位天)查找。ctime选项可以配合符号 + - 一起使用。

 

-mtime:按文件内容改变的时间(单位天)查找。

查找10天前内容发生改变的文件:

find ~/ -mtime +10

 

-atime:按文件的访问时间(单位天)查找。

 

-amin:按文件访问时间。单位分钟。

-mmin:按文件内容改变时间。单位分钟。

-cmin:按文件属性改变时间。单位分钟。

 

-maxdepth:指定的搜索目录深度。默认是无限大。

 

-exec 按搜索结果执行命令。

 

对搜索出的文件集合执行命令:

find . -type f -exec ls -l '{}' ';'  

 

对搜索出的文件集合进行的内容查找:

find . -type f -exec grep hello '{}' ';'

 

对搜索出的文件集合进行的内容查找,并输出匹配内容所在的文件:

find . -type f -exec grep hello '{}' ';' -print

 

对搜索出的文件集合进行的内容查找,并输出匹配内容所在的文件,并输出匹配内容的行号:

find . -type f -exec grep -n hello '{}' ';' -print

 

对搜索出的文件集合进行的内容查找,内容查找忽略大小写;输出匹配内容所在的文件,并输出匹配内容的行号:

find . -type f -exec grep -ni hello '{}' ';' -print

 

 

说明:

'{}' :表示find命令搜索的结果集。

find命令的输出以深度优先的方式将内存搜索并输出。

wps1E84.tmp

 

 

可以看到exec选项使用起来比较繁琐,所以最简单的方法是使用管道连接。

例:xargs

查找文件后,删除查找到的文件。

 

 

 

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

http://www.cnblogs.com/shijiaqi1066/p/4076158.html

posted @ 2014-11-05 13:28  LaplaceDemon  阅读(530)  评论(0编辑  收藏  举报