shell脚本中if与case使用,查找文件locate与find的使用,压缩,解压及归档工具

shell脚本中if与case使用

查找文件locate与find的使用

压缩,解压及归档工具


执行的循序

 顺序执行

 选择执行

 循环执行

条件语句if

if只是一个有含义的词,不能单独作为指令使用。

单分支

     if 条件判断:then

            条件为真的分支代码

     fi

双分支 

     if 判断条件:then

            条件为真的分支代码

     else

         条件为假的分支代码

     fi

多分支

      if 判断条件1,

         if-true

      elif 判断条件2,then

          if-ture

      elif 判断条件3,then 

          if-ture

           …

      else 

          all-false

      fi

QQ图片20160816110625.png

QQ图片20160816110714.png

case 条件判断

多用于离散值的判断

case  

PAT1)

     分支

     ;;

PAT2)

     分支2

     ;;

*)

     默认分支

     ::

esac     

case   *:任意长度任意字符

       ?:任意单个字符

       []:指定范围内的任意单个字符

       a|b: a or b

例子:

case $number in

1|3|6)

echo good

;;

2|4|7)

echo bad

;;

10|8|66)

echo very good

;;

esac

read -p "please input a number: " number

[ -z "$number" ] && echo "you must input a number " && exit

QQ图片2016081414244.png

QQ图片20160816110529.png

判断输入的数字是否正整数

read -p "please input a integer" n

! expr "$n" + 0 &> /dev/null  && echo no digit && exit 

[ $n -gt 0 ] && echo integer || echo "passive inte ger or zoro"

文件查找和压缩文件

文件查找

locate

locate +文件名

默认是全文件系统搜索

基于数据库搜索 /var/lib/mlocate/mlocate,db

updatedb 更新数据库指令

-i 执行忽略大小写

-n 只显示指定的行数目

locate foo  搜索名称或路径带有foo的文件

QQ图片20160816111101.png

locate -r '\.sh$' 搜索以.sh结尾的文件

locate 是外部命令

-r, –regexp REGEXP    搜索基本正则表达式 REGEXP 来代替模式

QQ图片20160816111232.png

find

实时查找工具,通过遍历指定路径完成文件查找:

查找速度慢

精确查找

实时查找

可能只搜索用户具备读取和执行权限的目录

find 是外部命令

查找条件:

-name "文件名称":可以使用 *,?,[],[^]

      find -name "checkint*" 要使用"" ''不然会出现问题

      find -name '[af]*.sh'

-iname:忽略大小写

-inum n :按inode号码查找

-samefile name :查找相同inode号码的文件

-links n:连接数目为n的文件

-regex "PATTERN" :

      find -regex '.*/.sh$'

-p:显示文件所使用的真实路径

根据属主和属组查找

按照UID,GID搜索

-user name:查找属主为指定用户的文件

-group grpname:查找属组为指定组的文件

-uid userID:查找属主指定UID的文件

-gid groupID:查找属组指定GID的文件

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

        find / nouser

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

        find / -nouser -nogroup

        默认可以多指令使用

QQ图片20160816111355.png

文件类型

   -type

f: 普通文件

d: 目录文件

l: 符号链接文件

s:套接字文件

b: 块设备文件

c: 字符设备文件

p: 管道文件

find / -type b  搜索块设备文件

QQ图片20160816111646.png

组合条件:

与:-a

或:-o

非:-not, !

find -not -name "*.sh" -not -name "f*"

默认可以多指令使用

QQ图片20160816111917.png

摩根定律:

非(P 且Q) = (非P) 或(非Q)

非(P 或Q) = (非P) 且(非Q)

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

不加括号括住所选的条件,最后加的-ls只会显示最后的条件的值

-a:与的使用时候可以直接在后面 -ls

-o:或的时候使用要用括号括起来

-path 排除

find /root -path/root/bin -a -prune -o -name "*.sh" -print(打印)  排除了/rootbin ,查找.sh结尾 的文件打印

格式:-path 路径 -a -prune(裁掉)

QQ图片20160816112300.png

根据文件大小来查找:

-size [+|-]#UNIT

常用单位:k, M, G

find / -size 10K =(9K,10K]

#UNIT: (#-1, #],如:6k

        (5k.6k]  5k到6k之间

-#UNIT:[0,#-1], 如:-6k

        [0,5k]  0k到5k

+#UNIT:(#,∞), 如:+6k

        [6k,+∞] 6k到无穷大

根据时间戳:

     用“天”为单位

     -atime [+|-]#

         #: [#,#+1)

        +#: [#+1,∞]

        -#: [0,#)

        -mtime

        -ctime

   -atime 7 [7,8)

   -atime -7 [0,7]

   -atime +7 [8,+∞)

find /etc/ -mmin -1 一分钟以内发生变化的文件

以“分钟”为单位:

-amin

-mmin

-cmin

QQ图片20160816113013.png

根据权限查找

-perm +数字表示的权限

find /bin/ -perm 4755 -ls 精确查找权限为4755的文件

find -perm /222(+222) 7版本用/222 属主属组其他有一个有读权限就满足搜索条件  

find -perm -222 属主属组其他都要有读权限才能满足搜索条件

没有-,/,+,直接+数字就是精确匹配

QQ图片20160816113013.png

QQ图片20160816113347.png

处理动作:

  -print:默认的处理动作,显示至屏幕;

-ls:类似于对查找到的文件执行“ls -l”命令

-delete:删除查找到的文件;

  -fls file:查找到的所有文件的长格式信息保存至指定文件中

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;

对于每个文件执行命令之前,都会交互式要求用户确认

find -perm -222 -ok rm {} \:

                  固定语法要带\:结束

                -ok chmod o-w {} \:

                -exec cp {} {} .bak \:

                {}专门配合find使用,表示搜索出匹配的文件

-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令

{}: 用于引用查找到的文件名称自身

find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题

find | xargsCOMMAND

find -perm /222 |xargs 0(换行)

find -perm /002 type f -delete 删除权限002的文件

压缩,解压及归档工具

compress[-dfvcVr] [-b maxbits] [file …]

-d: 解压缩,相当于

-c: 结果输出至标准输出,不删除原文件

-v: 显示详情

uncompress解压缩

zcatfile.Z>file

compress m  压缩,源文件删除了

compress -c m > m.Z

compress -c -d m.Z >m 解压缩,不删除源文件。

uncompress m.Z 解压文件

QQ图片20160816142538.png

zcat m.Z 看压缩文件内容,不进行文件解压

zcat m.gz 

gzip 压缩(较常用

gzip m   压缩文件,.gz格式

gzip -d m.gz 解压文件=gunzip

gzip -9 mgz(文件名)压缩比例(1-9),默认是6

QQ图片20160816143201.png

bzip2  压缩效率更高

bzip2 m(文件)

bzip2 -d m 解压缩文件

bzip2 -k m 压缩保留源文件

bzip2 -9 m (1-9)压缩比例,默认是6

bzcat 不显式解压缩的前提下查看文本文件内容

xz  压缩效率最高

xz m(文件)

xz -d m 解压缩文件

xz -k m 压缩保留源文件

xz -9 m (1-9)压缩比例,默认是6

xzcat :不显示解压缩的前提下查看文本内容

zip 打包压缩 (压缩多个文件)

zip –r sysconfig  sysconfig/

zip m m

unzip m.zip 解压缩

cat /var/log/messages | zip message –  压缩文件

unzip -p message >message 会将解压缩的结果显示到屏幕上,但不会执行任何的转换。

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

QQ图片20160816143738.png

查找/var目录下不属于root、lp、gdm的所有文件

blob.png

查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件

shell脚本中if与case使用,查找文件locate与find的使用,压缩,解压及归档工具QQ图片20160816144310.png

查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

[root@zczx ~]# find / -nouser -nogroup -atime -7

查找/etc目录下大于1M且类型为普通文件的所有文件

QQ图片20160816144749.png

查找/etc目录下所有用户都没有写权限的文件

QQ图片20160816145435.png

查找/etc目录下至少有一类用户没有执行权限的文件

[root@zczx ~]# find /etc/ -not -perm /111

查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

[root@zczx ~]# find /etc/init.d/ -perm -113

原创文章,作者:swzczx,如若转载,请注明出处:http://www.178linux.com/36348

(0)
swzczxswzczx
上一篇 2016-08-18
下一篇 2016-08-18

相关推荐

  • 常见RAID总结

    RAID浅析 目录索引 一、定义 二、特点 三、常用RAID级别      四、RAID实现方式 五、实际环境测试 一、定义: 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 独立磁盘冗余阵列(RAID,redundant array…

    Linux干货 2016-04-12
  • UID SGID与chmod 777的一些问题

    先来看问题 问题来了:echo的行为返回是对的还是vi是对的? 现场分析: vi 和 echo 都被设置为SGID权限。 abc文件所在的父目录权限是777 echo无法写abc文件,而vi是可以的 当时被问到这个问题时,我也是一征,怎么会这样。加之SUID,SGID在企业应用很少,如此这么久早忘了一干二净,只是赶紧去补课~,但经过30MIN后依然没有找到问…

    Linux干货 2016-08-08
  • 第9天:压缩,任务,rpm包

    http://note.youdao.com/yws/public/redirect/share?id=b3e4fc37bdd98991638dce69ce3eea53&type=false

    Linux干货 2016-08-18
  • 查找、压缩 随记

     查找模块 1. locate : 非实时查找(数据库查找)     实时查找: find locate 查询是建立在系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进行(周期性任务); 管理员手动更新数据库(updatedb) 索引构建过程需要遍历整个根文件系…

    Linux干货 2016-08-15
  • linux 文件管理命令

    cp 复制文件或者路径 单源复制: cp [OPTION]…[-T] SOUTCE DEST 如果DEST不存在:则事先创建此文件,并复制源文件的数据流到DEST中 如果DEST存在:   如果DEST是非目录文件:则覆盖目标文件; 如果DEST是目录,就在这个目录中创建一个同名的文件,把源数据复制到这个文件中。 多源复制: cp [O…

    Linux干货 2017-08-28
  • 马哥教育网络20期+第8周练习博客

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:链接层设备,基于MAC地址过滤。 集线器:物理层设备,基本都属于半双工模式。集线器与网桥在现在的局域网中基本都不用了。 二层交换机:基本MAC转发数据,功能齐全的可支持VLAN等功能。常见的有100/1000M、16口/24口/48口。 三层交换机:功能齐全的交换机,具备都…

    Linux干货 2016-08-01

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 14:48

    文章写的很详细,也很认真,对当天知识的梳理好好进行了梳理,是不是收获很大呢?继续保持哦