Bash-当某些文件名不相关时检查文件是否存在

时间:2019-03-06 11:58:01

标签: bash

我想检查文件是否存在,但只检查文件名是否存在

例如,在某些文件夹中,我有以下文件(日期格式:AAAAMMDD):

Rejets_20190112.csv.zip

Rejets_20190312.csv.zip

Rejets_20190314.csv.zip

我想检查该文件夹中是否存在以Rejet_DAP_201903开头的文件。换句话说,我要检查是否存在具有当前年份和月份的Rejet_DAP文件,日期没有关系。

这是我在脚本中尝试执行的操作:

jour=`date +%d`
mois=`date +%m`
annee=`date +%Y`


    FILE="/appli/project/echanges/RTY/receptions/Rejet_${annee}${mois}"_*


    if [[ -e $FILE  ]]
    then
            echo "FILE EXISTS"
    else
            echo "FILE DOES NOT EXIST"

    fi

2 个答案:

答案 0 :(得分:0)

您具有所需的目录路径和文件模式。

ls命令可用于根据模式列出文件。 执行后,所有命令均返回整数值。 0表示执行成功完成。任何非零值都表示错误。

如果没有文件与该模式匹配,

ls将返回非零值。

您可以在if语句中使用该返回代码。

#!/bin/bash

jour=`date +%d`
mois=`date +%m`
annee=`date +%Y`
/appli/project/echanges

dir="/appli/project/echanges/RTY/receptions"
file_prefix="Rejet_DAP_"


if ls $dir/${file_prefix}${annee}${mois}* > /dev/null 2>&1
then
        echo "FILE EXISTS"
else
        echo "FILE DOES NOT EXIST"
fi

#!/bin/bash行称为shebang行,我强烈建议在您的脚本中使用它。

> /dev/null 2>&1是这样,所以您不会从ls命令获得输出,而只显示输出。

答案 1 :(得分:-1)

您可以为此使用find

$ if [[ `find /appli/project/echanges/RTY/receptions/ -type f |grep -i Rejet_DAP_${annee}${mois}|wc -l` -gt 0 ]] ; then 
 echo "FILE EXISTS"
else
 echo "FILE DOES NOT EXIST"
fi