ファイル名(拡張子なし)と拡張子を別々に取得したい。
これまでに見つけた最善の解決策は次のとおりです。
NAME=`echo "$FILE" | cut -d'.' -f1`
EXTENSION=`echo "$FILE" | cut -d'.' -f2`
これはファイル名に複数の.
文字が含まれている場合には機能しないため誤りです。たとえば、 がある場合、とではなく、とa.b.js
が考慮されます。a
b.js
a.b
js
Pythonでは簡単に実行できます
file, ext = os.path.splitext(path)
しかし、可能であれば、このためだけに Python インタープリターを起動することは避けたいと思います。
もっと良いアイデアはありますか?
ベストアンサー1
まず、パスなしでファイル名を取得します。
filename=$(basename -- "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"
あるいは、パスの最後の「.」ではなく「/」に注目することもできます。これは、予期しないファイル拡張子がある場合でも機能するはずです。
filename="${fullfile##*/}"
以下のドキュメントを確認してください:
- ウェブ上のセクション「3.5.3 シェルパラメータの展開「
- bashのマニュアルページの「パラメータ拡張」セクション