locate
locate根据locate数据库中的文件名或路径返回搜索结果。该数据库存储文件名和路径信息以普通用户搜索条目时,调用locate搜索的用户必须对包含匹配元素的目录树拥有读取权限,才能返回结果locate数据库每日自动更新。使用updatedb可手动更新
实例:
搜索名称或路径包含“ passwd”的文件
locate passwd
部分匹配也会返回结果
locate image选项:
-i:不区分大小写搜索
-n:限制locate返回结果数量
find命令在本地文件系统中执行实时搜索,查找符合命令行参数条件的文件。 find命令以您的用户账户身份查询文件系统中的文件。调用find的用户必须具有查看其内容的目录的读取和执行权限
find第一个参数是要搜索的目录,如果没有,则默认从当前目录开始搜索,并在任何子目录中查找匹配项
find [指定查找目录] [查找条件] [查找完后要执行的动作]
选项:
-name:查找匹配所有文件名的文件,并返回匹配项
-iname:执行不区分大小写的搜索
-user和-group:根据所有者和所有组执行搜索。或-uid和-gid
*:匹配任意字符
?:匹配前面一个字符
[]: 匹配[]内的任意一个字符
[root@desktop0 ~]# find / -iname "[Db].txt"
-nouser #查找没有用户的文件
Find/tmp –nouser –exec rm –rf {} \;
-nogroup #查找没有组的文件
-a 连接两个不同的条件,两个条件必须同时满足
-o 连接两个不同的条件,两个条件满足其中一个就可
-not 对条件取反
参数:-perm
用于查找具有特定权限集的文件。权限前面可以加上/或-符号
前面带有/的数字权限将匹配文件的用户,组,其他人权限集
中的至少一位。
权限前带有-符号表示该位的所有三个实例都必须存在。
与/或-一起使用时,0值类似于通配符,因为其表示“至少无
任何内容的权限”
实例:
find -perm -004:匹配目录中其他人至少具有读权限的任何
文件
find -perm -002:其他人拥有写入权限的所有文件
find -perm /144
uFind -perm -221
uFind -perm /001
uFind -perm -201
find /tmp –perm 755 查找权限是755的文件
find /tmp –perm +755
[root@desktop0 tmp]# chmod 777 a3
[root@desktop0 tmp]# find /tmp -perm 777
/tmp/a3
[root@desktop0 tmp]# find /tmp -perm +600
/tmp/yum_save_tx.2018-01-21.11-26.vlPkN0.yumtx
/tmp/yum_save_tx.2018-01-21.14-21.LHWKR6.yumtx
/tmp/a1
[root@desktop0 tmp]# ll /tmp/a1
-rw-------. 1 root root 0 Jan 21 16:12 /tmp/a1
/ 满足一个就可以
+ 满足就可以
- 满足任何一个就可以
选项:-size
实例:
find -size 10M:搜索大小等于10M的文件
find -size +10G:查找大小大于10G的文件
find -size -10KB:查找大小小于10KB的文件
选项:-mmin
实例:
find / -mmin 120:查找正好在120分钟以前更改的所有文件
find / -mmin +200:查找200分钟以前修改过的文件
find / -mmin -150:查找/目录中不到150分钟以前更改的所有文件
-atime 以天为单位 最近一次访问时间
-mtime 以天为单位 最近一次修改时间表
-ctime 以天为单位 最近属性修改时间
-amin以分钟为单位
-mmin以分钟为单位
-cmin以分钟为单位
-5 5天内
5 5天
+5 5天之前
选项:-type
f:表示普通文件
d:表示目录
l:表示软连接
b:表示块设备
c: 字符设备文件
p:管道文件
s: socket 文件
实例:
find /etc -type d:查找/etc下的所有目录
find / -type l:查找/所有软连接
find /dev -type b:查找/dev目录所有块设备的列表
选项:-links
该选项加上数字查找具有特定硬链接数的所有文件
实例:
find /etc -links 1:查找/etc下链接数为1的文件
find /etc -links +1:查找/etc下链接数大于1的文件
find /etc -links -1 :查找/etc下链接数小于1的文件
-newer file 比file更新的文件
[root@desktop0 tmp]# find ./ -newer rsc.txt
./
./gmy.txt
./yum_save_tx.2018-01-21.11-26.vlPkN0.yumtx
./yum_save_tx.2018-01-21.14-21.LHWKR6.yumtx
./a1
./a2
[查找完后执行action]
-ls
-ok [cmd]
-exec [cmd]
例子:
Find /tmp –name “*.sh” -- exec chmod u+x {} \;
Find /tmp –name “*.sh”|xargs chmod u+x
[root@foundation0test]# groupdel testadmin
[root@foundation0 test]# find ./ -nogroup
./test002.txt
[root@foundation0 test]# find ./ -nogroup -ls
18355411 0 -rw-r--r-- 1 root 1001 0 Nov 17 20:02 ./test002.txt
[root@foundation0test]# find ./ -nouser -o -nogroup -ls
18355411 0 -rw-r--r-- 1 root 1001 0 Nov 17 20:02 ./test002.txt
[root@foundation0 test]# find ./ -nogroup -o -nouser -ls
23838779 0 -rw-r--r-- 1 1001 root 0 Nov 17 20:02 ./test001.txt
[root@foundation0 test]# ll
total 0
-rw-r--r--. 1 1001 root 0 Nov 17 20:02 test001.txt
-rw-r--r--. 1 root 1001 0 Nov 17 20:02 test002.txt
-rw-r--r--. 1 root root 0 Nov 17 20:02 test003.txt
[root@foundation0 test]# find ./ -name "test*" -type f -exec cp -rf{} /usr/local/src \;
find_perm权限:
find -perm -004 4:other rw 至少要有一个读
find -perm /004 三位中至少有一位满足
find -perm /144 三个中匹配一个就可以了
find -perm -002 三个都要满足
find -perm -441 三个都要满足 r--r----x
find -perm 664 精确匹配 rw-rw-r
find -perm +664 精确匹配 rw-rw-r
[root@foundation0test]# ln test01 test001
[root@foundation0 test]# ll
total 0
-rw-r--r--. 2 root root 0 Nov 17 20:23 test001
-rw-r--r--. 2 root root 0 Nov 17 20:23 test01
[root@foundation0 test]# find ./ -links +1
./
./test01
./test001
[root@foundation0 test]# find ./ -links +2
[root@foundation0test]# ls -ali
total 4
23838778 drwxr-xr-x. 2 root root 33 Nov 17 20:23 .
128 drwxr-xr-x. 19 root root 4096 Nov 17 20:01 ..
23838779 -rw-r--r--. 2 root root 0 Nov 17 20:23 test001
23838779 -rw-r--r--. 2 root root 0 Nov 17 20:23 test01
[root@foundation0 test]# find ./ -inum 23838779 通过INODE查找文件
./test01
./test001
[root@foundation0test]# ll
total 8
-rw-r--r--. 1 root root 2 Nov 17 20:27 rsc
-rw-r--r--. 1 root root 4 Nov 17 20:27 rsc001
-rw-r--r--. 2 root root 0 Nov 17 20:23 test001
-rw-r--r--. 2 root root 0 Nov 17 20:23 test01
[root@foundation0 test]# find ./ -newer rsc
./rsc001