Mevcut dizinde html dosyası bulunmadığı nasıl kontrol edilir?


0

htmlDosyaları geçerli dizine indirecek bir betik var .
Sonra bu htmldosyaları temel alan bir rapor oluşturacaktır .
Sonunda, tüm bu htmldosyaları silecek .
Bu yüzden, bu betiği çalıştırdığımda html, şu anki dizinde dosya olmadığından emin olmak istiyorum .

Elimde bu var:

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

Kontrol etmenin kolay bir yolu var mı?


Örnekte adlandırılmış klasör, sembolik bağlantı vb *.html. İstemiyorsanız, örnek çalışmalıdır .
Daniel Beck

1
Neden geçici bir dizin oluşturmuyorsunuz mktemp -d?
jfg956

Yanıtlar:


1

Failglob seçeneğini kullanarak ; Herhangi bir eşleşme olup olmadığını kontrol eder:

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

Kullanılması nullglob ve diziler; dosyaları sayar:

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

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

Nullglob kullanmadan veya atmadan başka bir yol $files:

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

Komut dosyasının tamamı için nullglob kullanmak - bazı durumlarda tamam olabilir, bazılarında kötü olabilir:

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

...

files=(*.html)
numfiles=${#files[@]}

1

Geçerli dizindeki HTML dosyalarının sayısını (klasörler, sembolik bağlantılar vb. Değil) sayın ve sıfırdan büyükse iptal edin:

if [[ $( find . -maxdepth 1 -type f -name "*.html" | wc -l ) -gt 0 ]] ; then
    echo "Oh no, there are HTML files!" >&2
    exit 1
fi

Dosya adlarındaki yeni satırlar sayacı kırarken, yalnızca artırır . Herhangi bir maçta sayının 0
Daniel Beck

1
for i in *.html
do
  if [ -f "$i" ] 
  then
     echo "Cannot run, html files in current directory"
     exit 1
  fi
done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.