実際、文字列はnew.tar.gzです。このファイルがtarballであることを確認したいと思います。
答え1
file
コマンドを使って確認してください。
$ file new.tar.gz
new.tar.gz: gzip compressed data, last modified: Tue Sep 26 16:50:00 2017, from Unix
圧縮されたファイルの内容を調べるには、解凍してfileを実行する必要があります。
$ gunzip -k new.tar.gz; file new.tar
new.tar: POSIX tar archive (GNU)
答え2
技術的にtar
アーカイブファイルを呼び出すことができます。何もない。 Unixでは、ファイル名はファイルの形式や内容を決定しません。
$filename
ただし、変数etherのファイル名が.tar
文字列で終わるかどうか、または文字列が含まれていることを確認することで問題を制限すると、次のようになります.tar.
。
case $filename in
*.tar|*.tar.*) echo 'possibly a tar file' ;;
esac
上記は、.tar
名前の末尾または.tar
他の拡張子が後に続くことを可能にします。
またはbash
(上記は以下をsh
含むすべてのシェルで機能しますbash
):
if [[ $filename =~ \.tar$ ]] ||
[[ $filename =~ \.tar\. ]]; then
echo 'possibly a tar file'
fi
または、
if [[ $filename == *.tar ]] ||
[[ $filename == *.tar.* ]]; then
echo 'possibly a tar file'
fi
ファイルに長いファイル名のリストが含まれている場合は、次の内容からファイル名が何であるかを確認できます。ファイルの行.tar
文字列で終わるか、次の文字列を含めます.tar.
。
grep -E '\.tar$|\.tar\.' file.list
この-E
フラグは、grep
指定されたパターンを拡張正規表現(処理用|
)として処理するように指示します。
または、
grep -e '\.tar$' -e '\.tar\.' file.list
リスト決定的な長いリストの各ファイルの拡張子(に保存されていますfile.list
):
sed 's/.*\.//' file.list
このsed
式は、s/.*\.//
最後のポイントまで各行のすべての内容を削除します。