如何检查当前目录中没有 html 文件?

如何检查当前目录中没有 html 文件?

我有一个脚本,它会将html文件下载到当前目录中。
然后它会根据这些文件生成报告html
最后,它会删除所有这些html文件。因此,当我运行此脚本时,我想确保当前目录中
没有文件。html

这是我得到的:

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

有没有什么简单的方法可以检查?

答案1

使用故障全局选项;检查任何匹配项:

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

使用空值和数组;计算文件数量:

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

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

另一种方法,不使用空值或丢弃$files

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

使用空值对于整个脚本来说——在某些情况下可能还可以,在其他情况下则不好:

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

...

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

答案2

计算 HTML 数量文件(不是文件夹、符号链接等)在当前目录中,如果大于零,则中止:

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

答案3

for i in *.html
do
  if [ -f "$i" ] 
  then
     echo "Cannot run, html files in current directory"
     exit 1
  fi
done

相关内容