web-dev-qa-db-ja.com

UNIXでフルパスからファイル名を取得する

"abc.txt" out of /this/is/could/be/any/path/abc.txt Unixコマンドを使用。ご了承ください /this/is/could/be/any/pathは動的です。

何か案が?

前もって感謝します。

41
iwan

bashで:

path=/this/is/could/be/any/path/abc.txt

パスにスペースが含まれている場合は、"で囲みます

path="/this/is/could/be/any/path/a b c.txt"

次に、パスを抽出するには、 basename function を使用します

file=$(basename "$path")

または

file=${path##*/}
62
kev

basename pathは、パスの最後にファイル名を与えます

編集:

一般的なパターンは、コマンドの周りにバッククォートを使用することであることを追加する価値があるでしょう。 `basename ...`。UNIXシェルはコマンドを実行し、そのテキスト値を返します。

そのため、basenameの結果を変数に割り当てるには、次を使用します。

x=`basename ...path...`

$ xはファイル名になります。

6
gbulmer

Dirnameコマンドを使用できます

$ dirname $path
2
Pavel Dolinin

basename /this/is/could/be/any/path/abc.txtを使用できます

1
tonymarschall