我想检查文件是否存在,但只检查文件名是否存在
例如,在某些文件夹中,我有以下文件(日期格式: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
答案 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