find
命令是用来搜索指定目录下面符合搜索选项的文件.它跟 awk
, sed
, grep
的区别是它搜索到的对象是文件,而后三者是文件里的字符或字符串.
简介
Linux 中 find
命令是用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
用法
命令格式
1find path -option
参数说明
-name 'pattern'
根据名称来查找-user 'pattern'
根据所属用户-size n
根据文件大小-type [fdbl]
根据文件类型-empty
是否时空文件-exec command {} \;
对查找到的文件进一步命令处理-mtime n
根据文件内容修改时间(单位是天)-ctime n
根据文件属性改变[chmod
]时间(单位时天)-atime n
根据文件访问[cat
]时间(单位是天)
注意:
-mmin n
/-cmin n
/-amin n
和上面三个区别是单位是分钟 对于n,n
是指正好n天前的当天,+n
是指所有n天前,-n
是指所有n天内
案例
查找 _posts/ 目录下面文件名包含 shell 字符串的文件
1find _posts/ -name '*shell*'
查找 _posts/ 目录下面文件名包含 shell 字符串的文件,并统计每个文件有多少行
1find _posts/ -name '*shell*' -exec wc -l {} \;
查询 _posts/ 目录下面文件大小大于 3k 的文件
1find _posts/ -size +3k
下面根据文件内容修改时间(单位是分钟)进行查找
目前 _posts 中的文件显示如下,以时间先后排序,其中 swp 的文件的修改时间为 7 月 1 号 18:12,而原文件是 17:59,其他的都是 6 月 30 号的文件.查询 19 分钟之前那一分中哪些文件被修改了
1find _posts/ -mmin 19
查询前 19 分钟之前所有被修改了的文件
1find _posts/ -mmin +19
查询前 19 分钟以内所有被修改了的文件
1find _posts/ -mmin -19