update.沢山のファイルの名前を変更したり、拡張子を変更する際には、シェル上での操作が便利なことがあります。この場合、ファイル名や拡張子、ファイル名から拡張子を取り除いたものを取得できると便利です。basenameとdirnameの利用MacOSやLinuxではbasenameコマンドやdirnameコマンドを利用すると、パス名からのファイル名の取り出しやパス名からのディレクトリ部分の取り出しが出来ます。"/foo/bar/baz.txt"/foo/barとなっています。$var次のような実行結果となります。baz.txt/foo/barファイル名からの拡張子の取り除きや拡張子の取得sedコマンドを利用した場合sedコマンドを使うと、ファイル名からの拡張子の取り除きができます。「's/.[^.]*$//'」というパターンでsedコマンドを使えばファイル名からの拡張子の取り除きが出来ます。「.ではじまっていてい.以外の文字が最後まで続く」を空文字列に置き換えると言った意味になっています。doneaab.cbsedコマンドのパターンを「's/^..([^.])$/\1/'」に変えると拡張子だけを取り出すことができます。拡張子を持っていないファイル名のファイルに対しては、変更が行われないので、注意が必要です。donebaktxttxtdocシェルの変数展開を利用した場合いちいちsedコマンドを利用するのは面倒な気がします。シェルの持っている変数展開の機能を利用するともう少し簡単にできるようになります。簡単に言うと、変数展開とは変数に保存されいる文字列を置き換えることです。下の表のようなことができます。他にもありますが、省いてあります。文字列置換(一致したものすべて)注:最初の4つの#や%を使った変数展開は/bin/shでも利用することができます。拡張子の取り除きは「後方一致のでの削除(最短マッチ)」を行えば、拡張子を取り除くことができます。「${変数名%.*}」という変数展開を利用します。下に実行例を示します。doneaab.cb変数の値が"/foo/bar/bar.txt"となっている場合には、"/foo/bar/bar"となります。doneとすれば可能です。${f/.cvs/.txt/}>doneでも可能です。「${変数名##*/}」という変数展開を利用すると、basenameコマンドのようにパス名からファイル名だけを取り出すことができます。${f##*/}>donea.baka.txtb.c.txtb.doc「${変数名##*.}」という変数展開を利用すると、拡張子だけを取り出すことができます。拡張子を持っていないファイル名のファイルに対しては、変更が行われないので、注意が必要です。donebaktxttxtdoc/junk/c一気にファイル名などを変更する際には便利な機能ですが、思ったように変数展開ができないと、面倒なことになります。自信がない場合には、echoなどを利用して変数展開の結果を確認してから、実行して下さい。まとめbashやshの変数展開を利用したパス名からのファイル名の取り出しなどは、以下のようにすれば可能です。SATO@mriho四捨五入すると還暦のおじさんです。物覚えが悪くなってきたので、自分のための備忘録として書いていきたいと思います。upLoginユーザーは見つかりませんでした。