Como testar se um arquivo que começa com um prefixo particular está presente em um diretório no shell script [closed]

1

Eu preciso testar se um arquivo que começa com "ant" está presente no diretório. Se isso estiver presente, preciso excluir esse arquivo. O comando que estou usando agora é

test -e $FILE_PATH/$FILE_NAME

Eu defini

FILE_NAME="ant"

Colocar * depois que o arquivo FILE_NAME não estiver funcionando.

    
por romil gaurav 27.07.2016 / 16:32

2 respostas

3

Uma maneira portátil de remover esse arquivo, se existir apenas um:

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

Parece-me que, se você não se importa com quantos desses arquivos 'ant' existem de antemão, mas quer que eles (todos) acabem quando você terminar, apenas:

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

- dessa forma, se não existissem tais arquivos, o rm (silêncio forçado) não faria nada, mas se houvesse (qualquer - um ou mais!) tais arquivos, rm os removeria. / p>     

por 27.07.2016 / 16:50
1

Aqui está outra maneira de fazer isso:

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

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

shopt -s nullglob : garantirá que a anotação seja retornada se o diretório estiver vazio.

set -- ${dir}/${filename}* : define o parâmetro posicional.

$# : retorna a contagem de parâmetros posicionais. como condição para a excitação de rm

como um linear:

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