这里写目录标题
命令格式:
find 查找位置 [选项] [参数]
1、按照文件名查找
find 查找位置 -name 文件名
选项:
-name | 按照文件名搜索 |
---|---|
-iname | 按照文件名搜索,不区分大小写 |
-inum | 按照iNode号搜索 |
2、按照文件大小搜索
find 查找位置 -size 文件大小
例子:
[root@akun ~]# ll -h
总用量 60K
-rw-r--r--. 2 user1 user1 91 5月 12 07:31 abc
-rw-------. 1 root root 1.3K 5月 8 01:23 anaconda-ks.cfg
-rw-r--r--. 1 root root 28K 5月 8 01:22 install.log
-rw-r--r--. 1 root root 8.9K 5月 8 01:21 install.log.syslog
[root@akun ~]# find . -size 1.3k
find: -size 的参数‘1.3k’无效
[root@akun ~]# find . -size 28k
./install.log
大小可以用±号来使用,比如:+50k 表示大于50k的文件,-50k表示小于50k的文件
大小结合逻辑与(a)、逻辑非(!)、逻辑或(o)使用:
[root@akun ~]# ll -h
总用量 60K
-rw-------. 1 root root 1.3K 5月 8 01:23 anaconda-ks.cfg
-rw-r--r--. 1 root root 28K 5月 8 01:22 install.log
-rw-r--r--. 1 root root 8.9K 5月 8 01:21 install.log.syslog
[root@akun ~]# find . -size +26k -a -size -30k
#查找当前目录下大于26k,小于30k的文件
./install.log
注:大小不写单位时默认单位时512字节,也就是说1表示512字节,2表示1024字节。
find的帮助中可以查到:
-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:
‘b’ for 512-byte blocks (this is the default if no suffix is used)
#单位为b或者不写单位时,按照512byte搜索,这是默认单位
‘c’ for bytes
#单位为c时,按照字节搜索
‘w’ for two-byte words
#单位时w时按照双字节搜索,(比如中文)
‘k’ for Kilobytes (units of 1024 bytes)
#单位为k时按照kb单位搜索。k必须小写
‘M’ for Megabytes (units of 1048576 bytes)
#单位时M时,按照mb单位搜索,M必须大写
‘G’ for Gigabytes (units of 1073741824 bytes)
#按照GB搜索,G必须大写
3、按照文件时间搜索
find 查找位置 [选项] [数字]
linux中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间
选项:
选项 | 作用 |
---|---|
-atime ±时间 | 按照文件的访问时间搜索 |
-mtime ±时间 | 按照文件数据修改时间搜索 |
-ctime ±时间 | 按照文件状态修改时间搜索 |
例子:
[root@akun ~]# find / -atime +3
#搜索三天前访问过的文件(不包括第三天)
[root@akun ~]# find . -atime -3
#搜索三天内访问过的文件
[root@akun ~]# find . -atime 3
#搜索三天前当天的24小时访问过的文件
4、按照权限搜索
find 搜索路径 [选项] 搜索权限
选项:
选项 | 作用 |
---|---|
-perm 权限模式 | 查找文件权限刚好等于“权限模式”的文件 |
-perm -权限模式 | 查找文件权限全部包含“权限模式”的文件 |
-perm +权限模式 | 查找文件权限包含“权限模式”的任意一个权限的文件 |
5、按照所有者和所属组搜索
find 搜索路径 [选项] 搜索内容
选项:
选项 | 作用 |
---|---|
-uid 用户ID | 按照用户ID查找所有者是指定ID的文件 |
-gid 组ID | 按照用户组ID查找所属组是指定ID的文件 |
-user 用户名 | 按照用户名查找所有者是指定用户的文件 |
-group 组名 | 按照组名查找所属组是指定用户组的文件 |
-nouser | 查找没有所有者的文件 |
按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件
只有一种情况例外,外来文件是没有所有者的,比如光盘和U盘中的文件如果由Windows复制的,在linux中查看就是没有所有者的文件,手工源码包安装的文件,也有可能没有所有者。
6、按照文件类型搜索
find 搜索路径 [选项] 搜索内容
选项:
选项 | 作用 |
---|---|
-type d | 查找目录 |
-type f | 查找普通文件 |
-type l | 查找软连接文件 |
[root@akun ~]# ll
总用量 60
-rw-r--r--. 2 user1 user1 91 5月 12 07:31 abc
-rw-------. 1 root root 1289 5月 8 01:23 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 3 5月 12 07:35 asd -> abc
-rw-r--r--. 1 root root 28425 5月 8 01:22 install.log
-rw-r--r--. 1 root root 9043 5月 8 01:21 install.log.syslog
[root@akun ~]# find . -type l
./asd
7、逻辑运算符
-a:逻辑与and
-o:逻辑或or
-not:逻辑非not
1)-a:逻辑与and
find命令也支持逻辑运算符选项,其中-a代表逻辑与运算,也就是-a两个条件都成立,find搜索才成立。
如:
[root@akun ~]# find . -size +2k -a -type f
#搜索,当前目录下大于2k的类型为普通文件的文件
2)-o:逻辑或or
-o逻辑或,两个条件只要其中一个成立,find命令就可以搜索到
如:
[root@akun ~]# find . -size +20k -o -size -1k
#搜索,当前目录下大于20k或者小于1k的文件
3)-not:逻辑或not
-not 也就是取反的意思,也可以用!表示
如:
[root@akun ~]# find . -not -size +20k
[root@akun ~]# find . ! -size +20k
#搜索,当前目录下小于等于20k的文件,(大于20k之外的文件)
8、其他选项
1)-exec 选项
find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \;
-exec的作用就是把find命令的结果交给由“-exec”调用的命令2来处理,“{}”就代表find命令查找的结果。
以 \;结尾
[root@akun ~]# find . -size -2k -exec ls -lh {} \;
#查找当前文件下小于2k的文件,并作为ls的对象,这样输出结果就直接可以看到文件的大小。
-rw-------. 1 root root 45 5月 25 06:30 ./.lesshst
-rw-r--r--. 1 root root 176 5月 20 2009 ./.bash_profile
-rw-r--r--. 1 root root 0 5月 12 07:48 ./wsx
-rw-r--r--. 2 user1 user1 91 5月 12 07:31 ./abc
注:命令2不能使用别名。
1)-ok 选项
-ok选项和-exec选项的作用基本一致,区别在于:-exec的命令2会直接处理,不询问,-ok的命令2在处理前会询问用户是否这样处理,得到确认后才会执行。
[root@akun ~]# find . -size -2k -ok ls -lh {} \;
< ls ... ./.lesshst > ? y
-rw-------. 1 root root 45 5月 25 06:30 ./.lesshst
< ls ... ./.bash_profile > ? y
-rw-r--r--. 1 root root 176 5月 20 2009 ./.bash_profile
< ls ... ./wsx > ? y
-rw-r--r--. 1 root root 0 5月 12 07:48 ./wsx
< ls ... ./abc > ? n
< ls ... ./.bashrc > ? n