[英]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.