ファイルが圧縮されている(.gzで終わる)場合は1つのコマンドを実行し、そうでない場合は別のコマンドを実行する必要があるシェルスクリプトがあります。私はこれにどのようにアプローチするのか本当に分かりません、ここに私が探しているものの概要があります:
file=/path/name*
if [ CHECK FOR .gz ]
then echo "this file is zipped"
else echo "this file is not zipped"
fi
=~
テスト内で[[...]]
演算子を使用して、単純な正規表現でこれを行うことができます。
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
本当に、シェルスクリプトでこのようなパターンに一致する最も明確で最も簡単な方法は、case
を使用することです。
case "$f" in
*.gz | *.tgz )
# it's gzipped
;;
*)
# it's not
;;
esac
次のようなものを試すことができます:-
if [[ ${file: -3} == ".gz" ]]