find: 遍历目录树
find命令的三个基本功能:
- find命令从指定的查找范围开始,递归地查找子目录。
- 凡满足条件的文件或目录
- 执行规定的动作
举例:
find ver1.d ver2.d -name '*.c' -print
范围:当前目录的子目录ver1.d和ver2.d
条件:与名字.c匹配。注意:.c应当用引号括起
动作:把查找到的文件的路径名打印出来
find命令的特点:
- 功能强,选项多
- 递归式查找
- 灵活性:
- 在“动作”中可以指定任何命令(也包括用户自己编写的处理程序),使得find成为一个任意处理命令可以借由来进行目录遍历的壳(类似awk对文本的逐行扫描,find对目录森林中为文件和目录逐个扫描)
find关于条件的选项
-name 'wildcard'
文件名与wildcard匹配,注意:
- 必需的引号(防止shell替换命令的时候出错)
- 对通配符的解释由find完成
- 这里的"文件名"仅指路径名的最后一部分
-regex pattern
整个路径名与正则表达式pattern匹配
-type
f:普通文件
d:目录
I:符号连接文件
c:字符设备文件
b:块设备文件
p:管道文件
-size +-n单位
指定文件大小(大于>, 等于,小于<)
单位有c(字符),b(块,512字节),k(1024),M(兆),G(吉),默认为b
-mtime +-ndays 文件最近修改时间
-newer file 文件最近修改时间比file的还晚
其他选项
-inum
-user,-nouser
-group
需要的时候查阅find手册
find关于动作的描述
-print
打印查找的文件的路径名
-exec
- 对查找到的目录执行某一命令
- 在-exec及随后的分号之间的内容作为一条命令
在这命令的命令参数中,{}代表遍历到的目录文件的路径名
-ok
与exec类似,只是对查找到符合条件的目标执行一个命令前需要经过操作员确认。