如何测试以特定前缀开头的文件是否存在于 shell 脚本的目录中

如何测试以特定前缀开头的文件是否存在于 shell 脚本的目录中

我需要测试目录中是否存在以“ant”开头的文件。如果存在,我需要删除该文件。我现在使用的命令是

test -e $FILE_PATH/$FILE_NAME

我已经定义了

FILE_NAME="ant"

在 FILE_NAME 之后添加 * 是行不通的。

答案1

如果仅存在一个此类文件,则可以使用一种可移植的方法来删除该文件:

set -- "${FILE_PATH}/${FILE_NAME}"*
[ $# -eq 1 -a -e "$1" ] && rm -- "$1"

在我看来,如果您不关心预先存在多少个“ant”文件,但希望在完成后它们(全部)消失,只需:

rm -f "${FILE_PATH}/${FILE_NAME}"*

- 这样,如果没有这样的文件, rm 将(强制安静)不执行任何操作,但如果有(任何 - 1 个或更多!)这样的文件,rm将删除它们。

答案2

这是执行此操作的另一种方法:

-sh-4.1$ dir=$(pwd)  ; filename="ant" 

if (( $(shopt -s nullglob; set -- ${dir}/${filename}*;  echo $#) > 0 ));  then rm
${dir}/${filename}* ; fi    

shopt -s nullglob:如果目录为空,将确保返回注释。

set -- ${dir}/${filename}* :设置位置参数。

$#:返回位置参数的计数。作为执行rm的条件

作为一个线性:

1$ dir=$(pwd) ; filename="ant" ;  if (( $(shopt -s nullglob; set -- ${dir}/${filename}*;  echo $#) > 0 )); then rm     ${dir}/${filename}* ; fi     

相关内容