2010年3月7日日曜日

シェルスクリプト/バッチファイルでフルパス名を分割

シェルスクリプト

フルパス名からファイル名部分を取り出す

bash
$ echo $PWD
/usr/local/lib/firefox-3.6
$ echo ${PWD##*/}
firefox-3.6
$ 

※ 先頭の最長一致部分を削除

フルパス名からディレクトリ名を取り出す

bash
$ echo ${PWD%/*}
/usr/local/lib
$ 

※ 末尾の最短一致部分を削除

下記 shell で確認

  • bash(sh で起動)
    GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
  • ksh
    sh (AT&T Research) 93s+ 2008-01-31

バッチファイル(cmd.exe)

フルパス名からファイル名部分を取り出す

Command Prompt
>echo %CD%
C:\WINDOWS\system32\drivers\etc
>for %i in ("%CD%") do @echo %~ni%~xi
etc

>

※ ~n:ファイル名(拡張子を除く)
※ ~x:拡張子

フルパス名からディレクトリ名を取り出す

Command Prompt
>for %i in ("%CD%") do @echo %~di%~pi
C:\WINDOWS\system32\drivers\

>

※ ~d:ドライブ名を展開
※ ~p:パス名を展開

下記 shell で確認

  • cmd.exe
    Microsoft Windows XP [Version 5.1.2600]