组合测试条件
-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