Linux工作必备命令:find命令 搜索神器高级用法
linux系统下一切都是文档(废话,windows也是),而且作为开发人员平时是不使用图形界面的,那么多的文档不可能都记住放在哪里,有时候我们印象中只是记下了文档大概的名字或者文件格式,这时候我们就需要find命令根据我们仅存的记忆来搜索文档了。
基本用法:find [路径] [选项]
下面我们以/var/log目录下的内容为例子进行讲解
-type ,根据文件类型 find /var/log -type f -name "*.log" ;查找/var/log目录下的文件(不搜索文件夹),文件名字以.log后缀为结尾
find /var/log -type d ,查找/var/log文件夹下的目录
-name ,根据文件名 find /var/log -type f -name "*.log",同上文描述,这里*是通配符,比如一个文件是helolchina_beijing.log文件,而我们只记住了china这部分名字,如何查找呢?
find /var/log -type f -name "*china*.log" ,是不是很简单。
-perm ,根据文件权限 find /var/log -perm 600 -type f -name "*.log"
平时开发小编很少用到,但是作为管理员或者运维工程师的话会经常用到。-user ,根据文件所属主 find /var/log -user root,意思是搜索/var/log下用户root的所有文件及目录
高级用法
1. find /var/log -type f -name "*.log" -exec wc -l {} ;
上面这句命令的意思是,搜索/var/log下的名字以.log为后缀的文件,同时统计每个文件的行数,其中,
; 表示可以执行多条命令
表示转义符,转义;上述命令就是将“;”转义,使这条命令结束,缺一不可
{} 表示把find命令匹配到的每一次结果传递给{}
-exec 表示执行
举例:
find /var/log -type f -name "*.log" -exec cp -a {} /home/test ;
上述命令表示搜索/var/log下的名字以.log为后缀的文件,同时将每个文件复制到/home/test文件夹下。
2. -mtime ,根据文件的变更时间来查找;
-n表示更改时间距离现在n天以内;
+n表示更改时间距离现在n天以前
举例:find /var/log -mtime -2 -name "*.log" -exec ls -lrt {} ;find /var/log -mtime +2 -name "*.log" -exec ls -lrt {} ;
总结:关于find命令,小编工作中基本用法用的比较多,基本就是用来搜索文件的,注意最好不要在根目录下搜索,这相当于全盘搜索,很耗时的,比如 find / -name "*.log",这是不推荐的。