Windows
操作系统要查找一份文件是相当简单的事情,只要在桌面上点击“开始
―
搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在
INTERNET
上查找各种文件,文档。可是在
linux
中要查找某一个文件就是一件很麻烦的事情。毕竟在
linux
中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。
Linux
下的文件表达式非常复杂,对于
linux
新手来说,
find
命令也是了解和学习
linux
文件特点的方法。下面就详细为大家介绍强大的
find
命令的全部使用方法和用途。
Find
命令用于进行文件查找,它有实施查找、精确、支持众多查找标准,但是它是遍历指定目录中的所有文件完成查找,所以速度非常慢。格式是:
find
查找路径
查找到以后的处理运作。不写查找路径默认为当前目录,查找标准默认为指定路径下的所有文件,处理运作默认为显示下面说一下它的主要命令。
匹配标准
-name:'filename':
对文件名精确查找
*
:任意长度的任意字符
[ ]
:指定此范围
-iname:
文件匹配不区分大小写
-regex PATTERN:
基于正则表达式进行文件名匹配
-user USERNAME:
根据属主查找
-group GROUPNAME:
根据属组查找
-uid UID:
根据
UID
查找
-gid GID:
根据
GID
查找
- nouser :
查找没有属主的文件
- nogroup :
查找没有属组的文件
-type:
根据文件类型查找
f:
普通文件
d:
目录文件
c:
字符设备文件
b:
块设备文件
l:
符号链接文件
p:
命令管道文件
s:
套接字文件
字符大小
-size [+(
内)
|-(
在限定之外
)
、什么都不加为精确到
]
#k:
#M:
#G
组合条件:
-a
与
-o
或
-not
时间(也可以使用
+-
与字符相同)
-mtime:
-ctime:
-atime:
-mmin:user
-cmin:
-amin:
内
根据权限查找
perm MODE
精确匹配
/MODE
任意一位匹配既满足条件
-MODE
文件权限能完全包含此
MODE
时才能显示
动作:
-print:
显示
-ls:
类似
ls -l
的形式显示每一个文件的详细
-ok COMMAND {}\;
每一部操作都需要用户确认
-exec COMMAND{}\;
不需要确认
下面就几个例子来说明一下用法:
1
、查找
/var
目录下属主为
root
并且属组为
mail
的所有文件;
find /var -user root -group mail
用
find
命令先找出
/var
,在查找属主为
root
且属组为
mail
的文件
2
、查找
/usr
目录下不属于
root,bin,
或
student
的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3
、查找
/etc
目录下最近一周内内容修改过且不属于
root
及
student
用户的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
首先,使用
find
命令查找
/etc
,然后是修改命令时间为
mtime
,最近一周,所以小于
7
天为“
-7
”不属于
root
和
student
的用户的文件
4
、查找当前系统上没有属主或属组且最近
1
天内曾被访问过的文件,并将其属主属组均修改为
root
;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
没有属主或没有属组为
“
-nouser -o -nogroup
”
并且最近一天曾被访问“
-a -atime -1
”
修改属主属组为
root
,使用
chown
命令。
{}
表示由
find
找到的内容
5
、查找
/etc
目录下大于
1M
的文件,并将其文件名写入
/tmp/etc.largefiles
文件中;
find /etc -size + 1M >> /tmp/etc.largefiles
6
、查找
/etc
目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 �Cls
用户没有写权限,使用
-perm MODE
-mode
:每一位权限必须精确匹配
.
文件权限完全包含
mode
才能显示
/mode:
任意一位匹配即满足条件
所以是“
-not -perm /222,
”并查看使用“
-ls
”命令