find 的使用简单汇总

1. 按照名字找
find /home -name "*.*" -print
-name的文件命名规则可参考正则表达式

用find 查找非-name所制定的文件
find ./ ! -name *.c

2.按照类型找
find /home -type f  -print
-type 常用值:f,文件类型;d,目录类型;l 链接类型

3. 按照时间找
搜索距今n日以内的文件:
 find / -mtime -n
搜索距今n日以前的文件:
 find / -mtime +n
查找比某个文件新或旧的文件:
 find -newer oldest_file_name ! -newer newest_file_name
例如,想找出在2月27日到2月28日之间修改过或者新增的文件
touch -t 02270000 oldfile

touch -t 02280000 newfile

find . -newer oldfile ! -newer newfile

4.搜索当前目录,但是忽略bin
 find ./ -name ./bin -prune -o -print

5.根据文件权限找
find . -perm 644
-perm 就是文件权限的二进制值 

6.找空文件
find . -empty

7. 使用-exec 对find出的文件进行操作
可以用-exec参数对find 得到的文件执行某些命令进行操作,格式如下:
-exec TheCommand {} ;
{} 指的就是find出的文件,在命令参数所在的位置;
1) 修改目录权限
find ./ -type d -exec chmod 755 {} ;
2) 将查到的空文件,移到tmp目录
find . -empty -exec mv {} /tmp ;
3) 查找目录下带有echo这个词的文件
find . -type f -exec grep -H echo {} ;

8. 还可以把find得到的文件,通过管道作为其他命令的输入
1) 计算查找出的文件的总和
find . -name "Arch*" -exec ls -l {} ; | awk 'BEGIN{Total=0}{ Total=Total+$5;}END{ print Total/(1024*1024*1024)"G"}'
2) 通过xargs扩展命令参数个数
如果查出的文件过多,还可以通过xargs命令扩展命令参数个数
find ./ -name detail# | xargs grep Stop
3) 删除所有文件名有 vsftpd 的文件
sudo find / -name "*vsftpd*" -print |sudo xargs rm -rf
4)查找文件内容含有comet的php文件
find . -name "*.php" | xargs grep 'comet'
5)如果含有特殊符号,如$
find . -name "*.php" | xargs grep -F '$comet'

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据