ファイル があり、そのディレクトリ名の最後の部分だけを ではなく/from/here/to/there.txt
取得したい場合、どうすればよいですか?to
/from/here/to
105706 次
9 に答える
143
ファイルでなくても使えbasename
ます。を使用してファイル名を削除しdirname
、 を使用basename
して文字列の最後の要素を取得します。
dir="/from/here/to/there.txt"
dir="$(dirname $dir)" # Returns "/from/here/to"
dir="$(basename $dir)" # Returns just "to"
于 2014-04-18T21:20:21.967 に答える
27
の反対dirname
は次のbasename
とおりです。
basename "$(dirname "/from/here/to/there.txt")"
于 2014-04-18T21:07:11.937 に答える
23
bash
文字列関数の使用:
$ s="/from/here/to/there.txt"
$ s="${s%/*}" && echo "${s##*/}"
to
于 2014-04-18T21:23:18.257 に答える
4
純粋な BASH の方法:
s="/from/here/to/there.txt"
[[ "$s" =~ ([^/]+)/[^/]+$ ]] && echo "${BASH_REMATCH[1]}"
to
于 2014-04-18T21:16:17.370 に答える
3
それを行うawk
方法は次のとおりです。
awk -F'/' '{print $(NF-1)}' <<< "/from/here/to/there.txt"
説明:
-F'/'
フィールドセパレータを「/」に設定します- 最後から 2 番目のフィールドを出力する
$(NF-1)
<<<
それ以降は標準入力として使用します ( wiki の説明)
于 2014-04-19T01:19:15.780 に答える
2
もう一つの方法
IFS=/ read -ra x <<<"/from/here/to/there.txt" && printf "%s\n" "${x[-2]}"
于 2014-04-18T22:17:10.937 に答える
1
この質問はTHISのようなものです。
あなたができることを解決するために:
DirPath="/from/here/to/there.txt"
DirPath="$(dirname $DirPath)"
DirPath="$(basename $DirPath)"
echo "$DirPath"
私の友人が言ったように、これも可能です:
basename `dirname "/from/here/to/there.txt"`
パスの任意の部分を取得するには、次のようにします。
echo "/from/here/to/there.txt" | awk -F/ '{ print $2 }'
OR
echo "/from/here/to/there.txt" | awk -F/ '{ print $3 }'
OR
etc
于 2014-04-19T04:14:39.697 に答える