簡體   English   中英

通過擴展名bash檢查文件類型的存在

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM