find 的参数详解及实例
欢迎来到 来到大浪涛天的博客 !
find 的参数详解及实例
1. 功能说明
find 命令用于查找目录下的文件,同时也可以调用其他命令来执行相对应的操作。
2. 语法格式
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
[选项] [路径] [操作语句]
如何处理符号链接 option tests actions
参数 限定的条件 执行的动作
3. 选项参数
pathname 命令所查找的目录路径
options 模块
-depth 从指定目录下最深层的子目录开始查找
-maxdepth levels 查找的最大目录级数,levels为自然数
-regextype type 改变正则表达式的模式,默认为emacs
tests 模块
-mtime [-n|n|+n] 按照文件的修改时间来查找文件(-n 文件更改距离现在n天以内,+n表示文件更改时间距离现在n天以前,n是距离现在第n天)
-atime [-n|n|+n] 按照文件的访问时间来查找文件
-ctime [-n|n|+n] 按照文件的状态改变时间来查找文件
-amin 按照文件的访问时间来查文件,单位为分钟
-cmin 按照文件的状态时间改变来查找文件,单位为分钟
-mmin 按照文件的状态修改时间来查找文件,单位为分钟
-group 按照文件属主来查找文件
-name 按照文件名来查找文件,只支持*,?,[]等特殊通配符
-newer 查找更改时间比指定文件新的文件
-nogroup 查找没有有效用户组的文件,即/etc/group中不存在
-nouser 查找没有有效属主的文件,即/etc/passwd中不存在
-path pattern 指定路径样式
-perm 按照文件权限来查找文件
-regex 按照正则表达式
-iregex 接正则表达式,不区分大小写
-size n[cwbkmg] 查找文件长度为n块的文件
-user 按照文件属主来查找文件
-type 模块
b 块设备
c 字符设备
d 目录
p 管道文件
l 符号链接文件
f 普通文件
s socket文件
D door
actions模块
-delete 将查找出的文件删除
-exec 对匹配的文件执行该参数所给出的shell命令
-ok 和-exec作用相同,但在执行每个命令之前,都会让用户先确定
-prune 使用这一选项可以使find命令不在当前指定目录中查找
-print 将匹配的文件输出到标准输出
! 取反
-a 取交集
-o 取并集
4. 实例
- 查找指定时间内修改过的文件
find . -atime -2
代表当前目录,查找两天内受到访问的文件
find /data/ -mtime -5
使用绝对路径/data,查找5天内修改的文件
2. find 查找时间说明
+4 4 -4
+4天以前文件更改时间
4 表示距离现在第4天
-4 表示表示4天内修改的文件
- 用name指定关键字查找
find /var/log -mtime +5 -name '*.log'
在/var/log目录下查找5天前以log结尾的文件
- 用 !反向查找
find . -type d
按类型查找,查找当前目录下的所有目录
find . ! -typf d
表示取反,当前非目录文件,注意!位置
- 按照目录或文件的权限来查找文件
find /data/ -perm 755
按照文件权限来查找文件,755权限的
- 按大小来查找文件
find -size +1000c
查找当前目录下文件大小大于1000字节的文件
- 查找文件时希望忽略某个目录
find /data -path "/data/dir3" -a -prune -o -print
-a && -o ||,当-path "/data/dir3"为真时,执行-prune,为假的话执行print。
- 忽略多个目录
find ~/oldboy ( -path ~/oldboy/ac -o -path ~/oldboy/bc ) -a -prune -o -print
注意 圆括号前面要加转义,且左括号和右或者和中间的字符必须要有空格
- 使用user和nouser和group,nogroup选项
find . -user nobody
find . -nouser
find . -group nobody
find . -nogroup
- 查找比某个文件新或旧的文件
find . -newer file8 ! -newer file4 隐藏-a参数 与
find . -newer file8 -o ! -newer file4 或运算
查找比file8新但是比file4旧的文件
查找比file8新的文件或比file4旧的文件
- 逻辑操作符使用
find . -maxdepth 1 -type d
find /etc -maxdepth 1 -type d ! -name "."
find /etc -maxdepth 1 -type d ! -name "." -o -name "fstab"
find /etc -maxdepth 1 -type d ! -name "." -a -name "fonts"