シェルで拡張子の置換え

よく忘れるのでメモっておく。
あんまり実用的な例ではないが、aaa.html,bbb.htmlが存在した場合、aaa,bbbというディレクトリを作りたかった。

for file in `ls *.html`;do mkdir ${file%.html};done
  • ${変数#パターン}

変数の内容について、最初の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。

  • ${変数##パターン}

変数の内容について、最初の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。

  • ${変数%パターン}

変数の内容について、最後の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。

  • ${変数%%パターン}

変数の内容について、最後の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。

Windowsユーザーに教えるLinuxの常識(8):bashで始めるシェルスクリプト基礎の基礎 (1/2) - @IT