shell检测某个文件/文件夹是否存在详细实例

 更新时间:2023年06月27日 08:42:49   作者:frostjsy  
shell是一个用 C 语言编写的程序,它是用户使用Linux的桥梁,下面这篇文章主要给大家介绍了关于shell检测某个文件/文件夹是否存在的相关资料,需要的朋友可以参考下

1、shell检测某一文件是否存在

当你在shell中需要检查一个文件是否存在时,通常需要使用到文件操作符-e和-f。第一个-e用来检查文件是否存在,而不管文件类型。第二个-f仅仅用来检查文件是常规文件(不是目录或设备)时返回true。

FILE=/etc/resolv.conf
if test -f "$FILE"; then
    echo "$FILE exist"
fi
FILE=/etc/resolv.conf
if [ -f "$FILE" ]; then
    echo "$FILE exist"
fi
FILE=/etc/resolv.conf
if [[ -f "$FILE" ]]; then
    echo "$FILE exist"
fi

2、shell检测某一目录是否存在

Linux系统中运算符-d允许你测试一个文件是否时目录。

例如检查/etc/docker目录是否存在,你可以使用如下脚本:

FILE=/etc/docker
if [ -d "$FILE" ]; then
    echo "$FILE is a directory"
fi
[ -d /etc/docker ] && echo "$FILE is a directory"

3、检查文件是否不存在

和其他语言相似,test表达式允许使用!(感叹号)做逻辑not运算,示例如下:

FILE=/etc/docker
if [ ! -f "$FILE" ]; then
    echo "$FILE does not exist"
fi
[ ! -f /etc/docker ] && echo "$FILE does not exist"

4、检查是否存在多个文件

不使用复杂的嵌套if/else构造,您可以使用-a(或带[[的&&预算符)来测试是否存在多个文件,示例如下:

if [ -f /etc/resolv.conf -a -f /etc/hosts ]; then
    echo "Both files exist."
fi
if [[ -f /etc/resolv.conf && -f /etc/hosts ]]; then
    echo "Both files exist."
fi

5、应用实例

只跑一遍diff的时候,可能因为环境不稳定导致diff,因此循环跑某个场景的diff query。具体实现如下,get_diff.py结合具体的场景定,-input_file ${result_dir}/${query_file}_${head}   -output_file ${result_dir}/${query_file}_${behind}这两个文件一样。

base="501"
exp="506"
iter_num=2
query_name="model_iter_v2"
data_dir=./data_${query_name}
result_dir=./result_${query_name}
if [ ! -d "${result_dir}" ]; then
    mkdir ${result_dir}
fi
if [  -d "${result_dir}" ]; then
    rm -rf ${result_dir}/*
fi
for var in  ${data_dir}/*; do
    query_file=${var##*/}
    cp ${data_dir}/${query_file} ${result_dir}/${query_file}_1
    head=1
    while [[ ${head} -lt ${iter_num} ]]
    do
        behind=$((${head} + 1))
        echo ${query_file}_${head}
        echo ${query_file}_${behind}
        python get_diff.py -input_file ${result_dir}/${query_file}_${head}  -b ${base} -e ${exp}  -output_file ${result_dir}/${query_file}_${behind} > ${query_file}.log
        sort -t"    " -k2,2nr ${result_dir}/${query_file}_${behind}_result > ${result_dir}/${query_file}_${behind}
        rm ${result_dir}/${query_file}_${behind}_result
        if [ ${behind} -eq ${iter_num} ]; then
            cp ${result_dir}/${query_file}_${behind} ./${query_file}_diff
        fi
        let head++
    done
done

参考:Linux中Shell脚本判断文件或文件夹是否存方法

总结

到此这篇关于shell检测某个文件/文件夹是否存在的文章就介绍到这了,更多相关shell检测文件夹是否存在内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell脚本实现多进程运行的方法示例

    shell脚本实现多进程运行的方法示例

    这篇文章主要给大家分享了shell脚本实现多进程运行的方法示例,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • ping发现掉包报警的shell代码

    ping发现掉包报警的shell代码

    一般用来判断服务器是否稳定,加入crontab中让其10分钟跑一次,需要的朋友可以参考下
    2013-01-01
  • Linux 中 CURL常用命令详解

    Linux 中 CURL常用命令详解

    这篇文章主要介绍了Linux 中 CURL常用命令详解,需要的朋友可以参考下
    2015-10-10
  • Linux touch命令使用示例

    Linux touch命令使用示例

    我们平时用得最多的是通过touch创建一个空文件,实际上通过touch命令可以修改文件的atime、mtime,所以文件的真实访问时间和修改时间是可以被修改,我们在排查系统异常的时候还需要结合日志、历史命令等等因素综合决策,本文介绍Linux touch命令,需要的朋友可以参考下
    2023-03-03
  • HBASE 常用shell命令,增删改查方法

    HBASE 常用shell命令,增删改查方法

    今天小编就为大家分享一篇HBASE 常用shell命令,增删改查方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 实现自动清除日期目录shell脚本实例代码

    实现自动清除日期目录shell脚本实例代码

    这篇文章主要介绍了实现自动清除日期目录shell脚本实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • shell通过sed上下两行合并成一行的实现

    shell通过sed上下两行合并成一行的实现

    本文主要介绍了shell通过sed上下两行合并成一行的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • shell 操作钉钉机器人实现告警提醒的方法

    shell 操作钉钉机器人实现告警提醒的方法

    这篇文章主要介绍了shell 操作钉钉机器人实现告警提醒的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Shell脚本中多命令逻辑执行顺序的方法详解

    Shell脚本中多命令逻辑执行顺序的方法详解

    Linux中可以使用分号“;”、双and号“&&”和双竖线“||”来连接多个命令,这篇文章主要介绍了Shell脚本中多命令逻辑执行顺序的方法,本文给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友参考下
    2020-03-03
  • linux shell(.sh)脚本编写和运行入门

    linux shell(.sh)脚本编写和运行入门

    这篇文章主要介绍了linux shell(.sh)脚本编写和运行入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论