shell 判断三个条件满足情况

文章讲述了如何使用bash脚本来检查已知的视频文件列表与实际上传的文件是否存在缺失的部分。通过读取预定义的文件列表并与当前目录下的视频文件进行对比,脚本可以识别出哪些文件缺少了特定的后缀名(如.1,.2,.3)。文中提供了两种不同的bash脚本实现方式,分别通过嵌套的if语句来判断文件是否存在,从而找出缺少的文件并给出提示。
摘要由CSDN通过智能技术生成

要求:

视频软件会每天定时上传文件,列表文件名字已知,并且每个文件都会有三个不同后缀名,需要每天自动检测是否有缺少某个视频文件,以便补充文件。

例如:上传结果A.1、A.2、A.3、B.1、B.2、C.3

需要根据已知的文件列表去对比结果,然后提示缺少的文件B.3、C.1、C.2

已知条件:

1、文件列表:
[root@localhost ~]# cat /root/videolist 
a
b
c
d
e
f
g
h

2、上传的结果
[root@localhost ~]# ll video
total 0
-rw-r--r--. 1 root root 0 Mar 17 10:34 a.1
-rw-r--r--. 1 root root 0 Mar 17 10:34 a.2
-rw-r--r--. 1 root root 0 Mar 17 10:34 a.3
-rw-r--r--. 1 root root 0 Mar 17 10:34 b.1
-rw-r--r--. 1 root root 0 Mar 17 10:34 b.2
-rw-r--r--. 1 root root 0 Mar 17 15:45 c.2
-rw-r--r--. 1 root root 0 Mar 17 10:34 c.3
-rw-r--r--. 1 root root 0 Mar 17 15:49 d.1
-rw-r--r--. 1 root root 0 Mar 17 15:49 d.3
-rw-r--r--. 1 root root 0 Mar 17 15:49 e.1
-rw-r--r--. 1 root root 0 Mar 17 15:49 f.2
-rw-r--r--. 1 root root 0 Mar 17 15:49 g.3

方法一:

1、脚本

[root@localhost ~]# cat video.sh 
#!/bin/bash

videolist=`cat /root/videolist`

for video in $videolist

do

  if [ -f /root/video/"$video".1 -a -f /root/video/"$video".2 -a -f /root/video/"$video".3 ];
  then
    echo "file YES $video"
  elif [ -f /root/video/"$video".1 -a ! -f /root/video/"$video".2 -a -f /root/video/"$video".3 ];
  then
    echo "file lack $video.2"
  elif [ -f /root/video/"$video".1 -a -f /root/video/"$video".2 -a ! -f /root/video/"$video".3 ];
  then
    echo "file lack $video.3"
  elif [ -f /root/video/"$video".1 -a ! -f /root/video/"$video".2 -a ! -f /root/video/"$video".3 ];
  then
    echo "file lack $video.2 $video.3"
  elif [ ! -f /root/video/"$video".1  -a  -f /root/video/"$video".2 -a -f /root/video/"$video".3 ];
  then
    echo "file lack $video.1"
  elif [ ! -f /root/video/"$video".1 -a -f /root/video/"$video".2 -a ! -f /root/video/"$video".3 ];
  then
    echo "file lack $video.1 $video.3"
  elif [ ! -f /root/video/"$video".1 -a ! -f /root/video/"$video".2 -a  -f /root/video/"$video".3 ];
  then
    echo "file lack $video.1 $video.2"
  elif [ ! -f /root/video/"$video".1 -a ! -f /root/video/"$video".2 -a ! -f /root/video/"$video".3 ];
  then
    echo "file NO $video"
  fi
done

2、脚本执行结果

[root@localhost ~]# ./video.sh 
file YES a
file lack b.3
file lack c.1
file lack d.2
file lack e.2 e.3
file lack f.1 f.3
file lack g.1 g.2
file NO h

方法二:

1、脚本

[root@localhost ~]# cat if.sh 
#!/bin/bash

videolist=`cat /root/videolist`

for video in $videolist

do
  if [ ! -f /root/video/"$video".1 ];then
    if [ ! -f /root/video/"$video".2 ];then
      if [ ! -f /root/video/"$video".3 ];then
        echo "file FULL NO  $video"
      else
        echo "file NO $video.1 $video.2"
      fi
    elif [ ! -f /root/video/"$video".3 ];then
      echo "file NO $video.1 $video.3"
    else
      echo "file NO $video.1"
    fi
  elif [ ! -f /root/video/"$video".2 ];then
    if [ ! -f /root/video/"$video".3 ];then
      echo "file NO $video.2 $video.3"
    else
      echo "file NO $video.2"
    fi
  elif [ ! -f /root/video/"$video".3 ];then
    echo "file NO $video.3"
  else
    echo "file FULL YES $video"
  fi
done

2、结果

[root@localhost ~]# ./if.sh 
file YES a
file lack b.3
file lack c.1
file lack d.2
file lack e.2 e.3
file lack f.1 f.3
file lack g.1 g.2
file NO h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友人a笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值