find命令
find是Linux下常用的一个查找命令,功能很强大,但是速度比较慢,因为要查询硬盘。下面来看下find的基本使用方法。
用法: find [path] [option] [action]
1.与时间有关的参数, -atime -ctime -mtime.这三个是文件的三个时间属性,用find可以根据它们查找文件。下面以-mtime来举例说明
-mtime n 查找n天之前的一天24小时之内更改过的文件
-mtime -n 查找n天之内更改过的文件
-mtime +n 查找n天之前(不包括第n天)更改过的文件
find /etc -mtime 4 查找之前第四天修改过的文件,4-5天
find /etc -mtime -4 查找之前第4天到现在修改过的文件,0-4
find /etc -mtime +4 查找之前第4天之后修改过的文件, 5-~
-newer filename 查找比filename这个文件新的文件(创建更晚)。
2.与用户有关的参数
-user username 查找属于该用户的文件
-group groupname 查找属于该组的文件
-nouser 找到不属于任何用户的文件
-nogroup 找到不属于任何组的文件
find /home/ubnt -user ubnt 查找/home目录下属于用户ubnt的文件
find /home -nouser 查找/home目录下不属于所有用户的文件
其他的与上两个命令类似。
3.与文件权限及名称有关的参数
-name filename 查找文件名为filename的文件, 支持正则表达式
-size [+-]size 查找比size大(+)或者比size小(-)的文件。这个size 的规格有c:byte, k:1024bytes. 比如要找大于50k的文件: -size +50k
-type TYPE 查找文件类型为TYPE的文件。类型主要有:一般文件(f),设备文件(b, c),目录(d),链接文件(l),socket(s),FIFO(p)等;
-perm mode 查找权限为mode的文件,mode类似chmod中使用的0644 代表 -rw-r–r–
-perm -mode 查找权限多于或等于mode的文件。比如查找mode: 0444 即权限属性是-r–r–r–时,多于或等于0444的权限比如0644 -rw-r–r–的文件也会被查到
-perm +mode 与上一个相反,查找权限小于等于mode的文件
find / -name passwd 在/下查找名字为passwd的文件
find / -size +50k 在/下查找内容大于50k的文件
find / -type s 在/下查找类型为socket的文件
find / -perm 【+-】0644 在/下查找权限为【少于等于,大于等于】0644的文件
4.其他可进行的操作
-exec cmd cmd为其他命令, -exec后面接其他命令来操作find查找到的结果;
-print 将结果打印出来,(find默认使用该选项)
实例: find / -size -10k -exec ls -l {} \;
该命令的结果是将/根目录下小于10k的文件打印出来。
find / -size -10k -exec ls -l {} \;
find / -size -10k 查找到的结果会放到 {} 中
-exec 后面接ls -l 命令, ls -l {} 代表把find找到的结果用ls -l打印出来
在bash环境中 ; 是有特殊意义的,所以用转移字符 \; 转换成普通字符