[英]Checking existence of file types via extensions bash
我需要测试目录中是否存在各种文件类型。
我试过了
$ [-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。
人们能否提出任何改进建议,更优雅的解决方案等
关于什么
shopt -s nullglob
[ -z "`echo *.$ext`" ] || echo "YAY WE HAVE FILES"
编辑:感谢@Dennis指出了nullglob
#!/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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.