Bashでファイル名と拡張子を抽出する 質問する

Bashでファイル名と拡張子を抽出する 質問する

ファイル名(拡張子なし)と拡張子を別々に取得したい。

これまでに見つけた最善の解決策は次のとおりです。

NAME=`echo "$FILE" | cut -d'.' -f1`
EXTENSION=`echo "$FILE" | cut -d'.' -f2`

これはファイル名に複数の.文字が含まれている場合には機能しないため誤りです。たとえば、 がある場合、ではなく、a.b.jsが考慮されますab.jsa.bjs

Pythonでは簡単に実行できます

file, ext = os.path.splitext(path)

しかし、可能であれば、このためだけに Python インタープリターを起動することは避けたいと思います。

もっと良いアイデアはありますか?

ベストアンサー1

まず、パスなしでファイル名を取得します。

filename=$(basename -- "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"

あるいは、パスの最後の「.」ではなく「/」に注目することもできます。これは、予期しないファイル拡張子がある場合でも機能するはずです。

filename="${fullfile##*/}"

以下のドキュメントを確認してください:

おすすめ記事