bash编程之 find文件查找工具

find 文件查找工具,通过遍历指定路径下的文件系统完成查找,速度慢,但执行精确查找;

语法:find [OPTIONS] [查找路径] [查找条件] [处理动作]

查找路径:默认为当前目录

查找条件:默示查找所有文件

处理动作:显示至屏幕

1 查找条件:

1.1 根据文件名字查找:

-name “文件名称”: 支持使用globbing元字符 *, ?, [], [^]

-iname "文件名称":查找时忽略文件名称字符大小写

-regex PATTERN: 查找时以PATTERN匹配整个文件路径字串,而不仅仅包含文件本身

1.2. 根据属主、属组来查找:

-user USERNAME: 查找属主为指定用户的文件; 

-group GROUPNAME: 查找属组为指定组的文件;

-uid UserID

-gid GroupID

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

1.3. 组合条件:条件之间要有逻辑关系

与: -a, 同时满足

或:-o, 满足一个条件

非: -not, !, 表示不符合条件

例:

-not A -a -not B = -not \( A -o B \)

-not A -o -not B = -not \( A -a B \)

1.4. 根据文件类型查找:

-type TYPE

f: 普通文件, -type f

d: 目录文件

l: 符号链接文件

s: 套接字文件

b: 块设备文件

c: 字符设备文件

p:命令管道文件

1.5 根据文件大小来查找:

-size [+|-]#UNIT

UNIT(常用单位):k, M, G

#UNIT: #-1 < x <= #

-#UNIT: x <= #-1

+#UNIT:x > #

 

例如:find / -size 10M   显示9M-10M之间大小的文件

find / -size -10M  显示小于等于9M大小的文件

find / -size +10M  显示大于10M大小的文件

1.6 根据时间戳查找:

以“天”为单位:

-atime [+|-]#   即access time, 文件被读取或者执行的时间

-atime #   #天到#+1天之间访问的文件 

-atime -#  #天内访问的文件

-atime +#  #天之前访问的文件

实例:

-atime 0   0天到1天之间访问的文件,即24小时内访问的文件 

-atime 3   3天到4天之间访问的文件,

-atime -3  3天内访问的文件

-atime +3  3天之前访问的文件

-mtime [+|-]#   即modify time,指文件内容被修改的时间。

-ctime [+|-]#   即change time,文件状态改变时间,如通过chmod修改文件属性

 

以“分钟”为单位:

-amin [+|-]#

-mmin [+|-]#

-cmin [+|-]#

使用stat可以查看文件的atime、ctime、mtime。

例:

stat ~/.bashrc

 

也可以使用ls查看文件的atime、ctime、mtime。

ls –l ~/.bashrc指示的是文件的modify time。

ls –lu ~/.bashrc 或者ls –l –time=atime~/.bashrc指示的是文件的access time

ls –lc ~/.bashrc 或者ls –l –time=ctime~/.bashrc 指示的是文件的change time

2. 对查找到的文件进行处理

find  命令  | xargs 命令

例:

find ~/ -size +10M | xargs du -sh  列出文件的大小

find ~/ -size +10M | xargs rm -rf  删除找到的文件

find ~/ -size +10M | xargs -i cp {} /tmp/ 将找到的文件复制到/tmp/目录下,其中-i的作用是将管道中的数据导入{}中

猜你喜欢

转载自oracle-api.iteye.com/blog/2366591