bash脚本编程学习之算术运算与文件查找

2019-09-23 09:15:01丽君

工作特性:查找速度略慢;精确查找;实时查找

fnind:

find:
 find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

查找条件;

根据文件名查找:

-name “pattern” 

-iname “pattern“ :忽略大小写

pattern支持glob风格的通配符;

-regex “pattern”:基于正则表达式查找文件,匹配的是路径,并非文件名;

根据文件从属关系查找:

-user USERNAME:查找属主为指定用户的所有文件;
-group GROUPNAME:查找属组为指定组的所有文件;
-uid UID:查找属主为指定UID的所有文件;
-gid GID:查找属组为指定GID的所有文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;

根据文件类型找找:

-type TYPE:
 f:普通文件;
 d:目录文件;
 l:符号链接文件;
 b:块设备文件;
 c:字符设备文件;
 p:管道文件;
 s:套接字文件;

根据文件的大小查找:

-size [+|-]#
 常用单位:K,M,G

根据时间戳查找:

以天为单位:
-atime [+|-]#
-mtime
-ctime
以分钟为单位: 
-amin
-mmin 
-cmin

根据权限查找

-perm [/|-]mode
mode:精确权限匹配
/mode:任何一类用户(u,g,o)权限中的任何一位(r,w,x)满足其中一个就行;权限位之间存在或关系;
-mode:每一类用户(u,g,o)权限中的的每一位(r,w,x)同时符合和条件才满足;权限位之间存在与关系;

组合测试:

与:-a;默认组合逻辑;两个条件都满足为与;
或:-o;满足两个条件其中一只为或;
非:!;-not!取反

处理动作:

-print:输出至标准输出;默认的动作;
-ls:类似于对查找到的文件执行“ls -l”命令;显示文件的详细信息
-delete:删除查找到的文件;
-fls /PSTH/TO/SOMEFILE:吧查找到的文件长格式信息保存至指定的的文件中;
-ok COMAND {} ; :对查找到的每个文件执行由COMAND表示的命令每次操作都由用户确认;
-exec COMAND {} ; :对查找到的每个文件执行由CMOAND代表的命令;

练习:

1、找出/tmp目录下属主为非root的所有文件;

find /tmp/ -! -user root

2、找出/tmp目录下文件名中不包含fstab字符串的文件

find / -name [^fstab]

3、找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件;

find /tmp -! -user root -a -name [^fstab]

1、查找/var目录下属主为root,且属组为mail的所有文件或目录;

find /var/ -user root -a -group mail