Script para comparar e excluir os arquivos com base no nome e no tipo de extensão

0

Meu programa cria dois arquivos com o mesmo nome, mas extensão diferente (por exemplo: 20162012.dat & 20162012.cnf). Às vezes, o programa não consegue criar o arquivo .dat. Então o outro arquivo .cnf se torna órfão. Eu estou procurando um script para comparar isso e excluir o arquivo .cnf órfão para o qual seu arquivo .dat parceiro não está presente.

Qualquer script e sugestão .. por favor ajude.

Tentei abaixo de um, mas cometi erros. Talvez esteja faltando alguma coisa. por favor corrija.

Script:

for f in *.cnf
do
    [ -e "$f" ] || continue
    f="${f%%.cnf}"
    [ -e "$f".dat ] || rm -i -- "$f".cut
done

Erro:

rm: cannot remove '20162010.cut': No such file or directory

Observação: estou tendo o script e o arquivo a serem comparados e excluídos na mesma pasta.

Obrigado!

    
por Ram 20.12.2016 / 04:12

1 resposta

1

Faça:

for f in *.cnf; do [[ -f ${f%.*}.dat ]] || echo "$f"; done

Esta é uma corrida a seco; substitua echo por rm para ação real.

  • for f in *.cnf itera sobre os arquivos .cnf

  • [[ -f ${f%.*}.dat ]] verifica se o arquivo .dat relevante existe

  • Se não ( || ), imprima (ou remova) o arquivo

por 20.12.2016 / 04:16