Como verificar se não há arquivos html no diretório atual?

0

Eu tenho um script que baixará html arquivos no diretório atual.
Em seguida, ele gerará um relatório com base nesses arquivos html .
Por fim, ele excluirá todos esses arquivos html .
Então, quando executo esse script, quero ter certeza de que não há arquivos html no diretório atual.

Isso é o que eu recebi:

if ls *.html >/dev/null 2>&1; then
    echo 'clear HTML files first'
    exit
fi

Existe alguma maneira fácil de verificar?

    
por kev 08.04.2012 / 17:29

3 respostas

1

Usando a opção failglob ; verifica se há correspondências:

if (shopt -s failglob; true *.html) 2>/dev/null; then
    echo "Found files"
fi

Usando nullglob e matrizes; conta os arquivos:

numfiles=$( shopt -s nullglob; files=(*.html); echo ${#files[@]} )

if (( numfiles > 0 )); then
    echo "Have $numfiles HTML files"
else
    echo "No files"
fi

Outra maneira, sem usar nullglob ou descartando $files :

files=(*.html)
if [[ -e ${files[0]} ]]; then
    numfiles=${#files[@]}
    echo "$numfiles files found"
fi

Usando nullglob para o script inteiro - pode estar bem em alguns casos, e ruim em outros:

#!/usr/bin/env bash
shopt -s nullglob

...

files=(*.html)
numfiles=${#files[@]}
    
por 08.04.2012 / 18:18
1

Conte o número de arquivos HTML (não pastas, links simbólicos, etc.) no diretório atual e, se for maior que zero, anule:

if [[ $( find . -maxdepth 1 -type f -name "*.html" | wc -l ) -gt 0 ]] ; then
    echo "Oh no, there are HTML files!" >&2
    exit 1
fi
    
por 08.04.2012 / 17:38
1
for i in *.html
do
  if [ -f "$i" ] 
  then
     echo "Cannot run, html files in current directory"
     exit 1
  fi
done
    
por 08.04.2012 / 20:42

Tags