Bagaimana cara memeriksa tidak ada file html di direktori saat ini?


0

Saya memiliki skrip yang akan mengunduh htmlfile ke direktori saat ini.
Maka itu akan menghasilkan laporan berdasarkan htmlfile - file ini .
Akhirnya, ini akan menghapus semua htmlfile ini .
Jadi, ketika saya menjalankan skrip ini, saya ingin memastikan tidak ada htmlfile dalam direktori saat ini.

Inilah yang saya dapat:

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

Apakah ada cara mudah untuk memeriksanya?


Contoh Anda harus berfungsi jika Anda tidak menginginkan folder, tautan simbolik, dll. Yang dinamai *.html.
Daniel Beck

1
Mengapa tidak membuat direktori sementara dengan mktemp -d?
jfg956

Jawaban:


1

Menggunakan opsi failglob ; memeriksa kecocokan:

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

Menggunakan nullglob dan array; menghitung file:

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

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

Cara lain, tanpa menggunakan nullglob atau membuang $files:

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

Menggunakan nullglob untuk seluruh skrip - mungkin oke dalam beberapa kasus, buruk pada yang lain:

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

...

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

1

Hitung jumlah file HTML (bukan folder, tautan simbolik, dll.) Di direktori saat ini, dan, jika lebih besar dari nol, batalkan:

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

Sementara baris baru dalam nama file akan memecah counter, mereka hanya meningkatkannya . Pertandingan apa pun akan menambah penghitung lebih dari 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.