Linux 学习之路(八):文件查找

组合测试条件

​ -a:与关系

​ -o:或关系

​ !:非关系

if [ $# -gt 1 -a $# -le 3 ]

if [ $# -gt 1 ] && [ $# -le 3 ]

let SUM+=$I

let I+=1 相当于 let I++

文件查找:

locate:

​ 非实时,模糊匹配,查找是根据全系统文件数据库进行的;

#updatedb,手动生成文件数据库

速度快

find:

​ 实时

​ 精确

​ 支持众多查找标准

​ 遍历指定目录中的所有文件完成查找,速度慢

find 查找路径 查找标准 查找到以后的处理动作

查找路径:默认为当前目录

查找标准:默认为指定路径下的所有文件

处理动作:默认为显示

匹配标准:

​ -name ‘FILENAME’:对文件名作精确匹配

​ 文件名通配:

​ *:任意长度的任意字符

​ ?

​ []

​ -iname ‘FILENAME’:文件名匹配不区分大小写

​ -regex PATTERN:基于正则表达式进行文件名匹配

​ -user USERNAME:根据属主查找

​ -group GROUPNAME:根据属组查找

​ -uid UID:根据UID查找

​ -gid GID:根据GID查找

​ -nouser:查找没有属主的文件

​ -nogroup:查找没有属组的文件

-type

​ f:普通文件

-size

​ [+|-]#k :所有大于#k或者小于#k

​ #M

​ #G

组合条件:

​ -a

​ -o

​ -not

没有指定联系方式默认是与操作

练习:

当前目录下属主不是user1,也不是user2

[root@localhost ~]# cp tasks.py xfs
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# chown user1 xfs
[root@localhost ~]# chown user2 xfs
[root@localhost ~]# chown user1 tasks.py
[root@localhost ~]# find ./ -user user1
./tasks.py
不是user1
[root@localhost ~]# find ./ -not -user user1
不是user1也不是user2
[root@localhost ~]# find ./ -not -user user1 -a -not -user user2
[root@localhost ~]# find ./ -not \(-user user1 -o -not -user user2\)#德摩根定律

属主不是user1,并且类型不是目录

find ./ -not \(-user user1 -a -type d\)

-mtime

-ctime

-stime

​ [+|-]#

-min

-cmin

-amin

​ [+|-]# +5:5分钟之前访问过

-perm MODE精确匹配

-perm -MODE每一位都要精确匹配(文件权限完全包含此mode)

-perm /MODE只要有一位匹配

当前目录下在5分钟之内访问过的文件

[root@localhost ~]# find ./ -amin -5
[root@localhost ~]# touch a
[root@localhost ~]# touch -a a
[root@localhost ~]# find ./ -amin -5
./a

动作:

​ 默认-print:显示

​ -ls:类似ls -l的形式显示每一个文件的详细信息

​ -ok COMMAND {} :每一次操作都需要用户确认

​ -exec COMMAND {} \:exec操作不需要用户确认

find ./ -perm -006 -exec chmod o-w {} \

属组有写权限,把原文件改成.new

find ./ -perm -020 -exec mv {} {}.new \

只要引用这个文件的文件名,就要使用{}

练习:

1.查找/var目录下属主为root并且属组为mail的所有文件

find /var -user root -a -group mail

2.查找/usr目录下不属于root,bin或student的文件

find /usr -not \(-user root -o -user bin -o -user student \)

3.查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件

find /etc -ctime -7 -not -user root -a -not -user student

4.查找当前系统上没有属主或属组且最近一天内曾被访问过的文件,并将其属主属组均修改为root

find /\( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \

5.查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中

find /etc -size +1M >> /tmp/etc.largefiles

6.查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息。

find /etc -not -perm /222 -ls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值