若有不妥之处,望请各位大佬提出
find命令
find命令主要执行文件,选项不是很多,用起来很便捷。
find . -maxdepth 2 -mindepth 1 -type f -atime +7 -name -size +2k "*.txt" -user test -delete
- .:指定开始搜索的路径,这里代表当前目录
- maxdepth:限定查找最大目录深度,没有限制的时候会一直查找下去
- mindepth:限定目录最小深度
- type:文件类型,还有其他的文件类型
- atime:文件访问时间,以天为计,+7:表示大于7天,-7:小于7天,7:等于7天。与时间类似的还有,amin,它是以分钟为单位
- name:文件的名字,支持通配符
- iname:忽视文件名的大小写
- size:文件的大小
- user:文件的所属者,这里指定的是test用户
- delete:将符合条件的文件全部删除
文件类型 | 类型参数 |
---|
普通文件 | f | 符号连接 | l | 目录 | d | 字符设备 | c | 块设备 | b | 套接字 | s | FIFO | p |
选项 | 解释 |
---|
atime | 访问时间 | mtime | 修改时间 | ctime | 变化时间 |
find /proc -maxdepth 5 "*/test/*" -L -name "haha"
- L:find命令默认是不会查找符号连接的。开启了符号连接,要注意死循环的问题。如果一个符号连接连接到本身,你又开启了它,就会出现死循环了。
find . -type f -name "*.php" ! -perm 644 -exec chmod 644 {} \;
- exec:和管道符差不多,将上一条命令的结果作为下一条命令的参数
- !:非咯,不是的意思咯
- ;:一定要注意这个点,它表示对;(分号)的转义,表示chmod命令的结束。如果不写,表明find命令的结束,而chmod命令还没有结束,会报错参数遗漏的错误
find . \( -name "*.sh" -o -name "*.txt" \) -print
- o:或者or的首字母,还有a与
- print:就是打印了,写不写都可
find . -regex '.*(\.jpg\|\.png)$'
- regex:正则表达式咯,非常恶心的东西。iregex:忽视大小写
|