我需要测试目录中是否存在各种文件类型。
我试过
$ [-f *。$ fileext]
其中fileext是文件扩展名,但似乎不起作用。
这两种方法都有效
function checkext() {
fileext=$1
ls *.$fileext>/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "We have $fileext files!"
else
echo "We don't have any $fileext files!"
fi
}
和
function checkext2() {
extention=$1
filescheck=(`ls *.$1`)
len=${#filescheck[*]}
if [ $len -gt 0 ]
then
echo "We have $extention files!"
else
if [ $len -eq 0 ]
then
echo "We don't have any $extention files!"
else
echo "Error"
fi
fi
}
第二种方法不太整洁,因为显示任何ls错误所以我更喜欢方法1。
人们可以建议任何改进,更优雅的解决方案e.t.c
答案 0 :(得分:3)
怎么样
shopt -s nullglob
[ -z "`echo *.$ext`" ] || echo "YAY WE HAVE FILES"
编辑:感谢@Dennis指出nullglob
答案 1 :(得分:0)
#!/bin/bash
filetypes="lyx eps pdf"
for type in $filetypes
do
files=$(ls *.${type} 2>/dev/null)
if [ ! -z "$files" ]
then
echo "filetype: [$type] exists"
fi
done