我有一個shell腳本,我需要做一個命令,如果一個文件被壓縮(以.gz結尾),另一個如果不是。我真的不知道如何處理這個,這裏是什麼,我正在尋找一個輪廓:在bash中檢查文件擴展名的最簡單方法是什麼?
file=/path/name*
if [ CHECK FOR .gz ]
then echo "this file is zipped"
else echo "this file is not zipped"
fi
我有一個shell腳本,我需要做一個命令,如果一個文件被壓縮(以.gz結尾),另一個如果不是。我真的不知道如何處理這個,這裏是什麼,我正在尋找一個輪廓:在bash中檢查文件擴展名的最簡單方法是什麼?
file=/path/name*
if [ CHECK FOR .gz ]
then echo "this file is zipped"
else echo "this file is not zipped"
fi
你可以用做簡單的regex,使用=~
運營商[[...]]
測試裏面:
if [[ $file =~ \.gz$ ]];
這不會給你正確的答案,如果擴展名是.tgz
,如果你在乎次在。但它很容易修復:
if [[ $file =~ \.t?gz$ ]];
圍繞正則表達式引號的缺失是必要和重要的。你可以引用$file
但沒有意義。
這可能會更好使用file
實用程序:
$ file --mime-type something.gz
something.gz: application/x-gzip
喜歡的東西:
if file --mime-type "$file" | grep -q gzip$; then
echo "$file is gzipped"
else
echo "$file is not gzipped"
fi
真的,在一個shell腳本符合這樣的模式最清晰,往往最簡單的方法是與case
case "$f" in
*.gz | *.tgz)
# it's gzipped
;;
*)
# it's not
;;
esac
是的你是對的。這是最乾淨的恕我直言。 – Nishant
'zip!= gzip',那應該是「這個fi le是(不)gzipped「 – jlliagre
*正確*的方式是使用文件。 – devnull