質問: ファイル名の拡張子をつかむ bashからファイル拡張子を取得するにはどうすればよいですか?これが私が試したものです:filename=`basename $filepath` fileext=${filename##*.} そうすることで、パスbz2から/dir/subdir/file.bz2の拡張を取得できますが、パス/dir/subdir/file-1.0.tar.bz2に問題があります。可能であれば、外部プログラムなしでbashのみを使用するソリューションをお勧めします。私の質問を明確にするために、私はextract path_to_fileの単一のコマンドだけで特定のアーカイブを抽出するbashスクリプトを作成していました。ファイルを抽出する方法は、圧縮またはアーカイブの種類(.tar.gz、.gz、.bz2など)を確認することにより、スクリプトによって決定されます。たとえば、拡張子.gzを取得する場合、これには文字列操作が含まれるはずです。 .tarの前に文字列.gzがあるかどうかを確認する必要があります—ある場合、拡張子は.tar.gzにする必要があります。
回答: $ echo "thisfile.txt"|awk -f . '{print $nf}' これに関するコメント: http://liquidat.wordpress.com/2007/09/29/short-tip-get-file-extension-in-shell-script/