如何查找文件/文件类型/属性

如题所述

第1个回答  2019-09-27
你应该咨询的是Linux系统下查找文件、文件类型、属性的方法吧:
-----查找文件
1、find名称查找文件格式:$
find
[
PATH
]
[
option
]
[
action]
常用option如下:
-name
fileName
-size
[+-]SIZE
#+表示大于
-表示小于
-type
TYPE
#TYPE为f/d/l/s/b/c
-perm
mode
#搜寻文档权限等于mode的文档,如$find
./
-perm
0755
-perm
-mode
#搜寻全部囊括mode权限的文档,如$find
./
-perm
-0744
则会列出权限为4755、0744的所有文件,因为-rwsr-xr-x囊括了-rwxr--r--的属性,即拥有4755权限的文件一定拥有0744的权限
-perm
+mode
#搜寻包含任一mode权限的文档,例如$find
./
-perm
+755
时,属性为-rw-
---
---的文件也会被列出来,因为他有rw的属性
与时间有关的option有-mtime/ctime/atime,这三者的区别请参考本博客的另一篇文章
-mtime
n
n天之前的一天内被修改过的文件
-mtime
+n
n天之前(不含n)被修改过的文件
-mtime
-n
n天之内(含n)被修改过的文件
例如:
$find
./
-mtime
4
$find
./
-mtime
-4
$find
./
-mtime
+4
例2:
将过去24小时内修改过的文件列出
$find
./
-mtime
0
#0
表示现在
例3:$find
/
-perm
+7000
-exec
ls
-l
{}
\;
说明:
{}
代表有find找到的内容
-exec一直到\;是关键词,代表find额外的动作的开始到结束,在这中间的就是find的额外动作
因为分号在bash环境下有特殊意义,这里的\主要是为了跳脱分号的特殊意义
例4:$find
./
-name
'*http*'
#find命令中可以使用通配符来寻档案名
2.locate命令查找文件格式:$
locate
[-ir]
Keyword
例1:找出所有文件名含有passwd的文档
$
locate
passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/news/passwd.nntp
3、whereis命令格式$
whereis
[-bmsu]
文档名或目录名
-b
只查找binary格式的文档
-m
只查找在说明文件manual路径下的文件
-s
只找source来源档案
-u
搜索不在上述三个项目中的其他文件
区别:
find命令搜寻命令花的时间长,因为他直接在硬盘上搜索。
locate命令搜索时以数据库文档(/var/lib/mlocate/)中搜索得到的,不用直接去硬盘取数据,所以较快。
但是数据库的建立默认是在每天执行一次(即每天更新一次数据库),所以当你新建立起来档案后,在数据库更新前使用locate会找不到文件。
解决办法:可以使用updatedb命令更新数据库(这个命令一般会执行数分钟),然后再使用locate命令查询。
whereis命令也是根据数据库文档得到文件
根据上面的区别可知:一般我们先用locate
或whereis命令查找文件,在找不到的情况下才用find查找
-----查看文件的类型:file命令
-----查看文件的属性:lsattr命令