Linux Bash-splitdir字符串

Linux Bash-splitdir字符串,linux,bash,scripting,Linux,Bash,Scripting,我得到了以下字符串:“/transfer/IN/name/test.txt” 现在我正试图将其拆分为字符串name,因为我需要它来进行进一步的操作 我怎样才能正确地拆分这个 我尝试过使用剪切(sed会更好吗?),但我找不到正确的方法 提前感谢您的帮助。只需使用适当的工具dirname和basename链接在一起: echo $(basename $(dirname /transfer/IN/name/test.txt)) dirname=>/transfer/IN/name basename

我得到了以下字符串:“/transfer/IN/name/test.txt”

现在我正试图将其拆分为字符串name,因为我需要它来进行进一步的操作

我怎样才能正确地拆分这个

我尝试过使用剪切sed会更好吗?),但我找不到正确的方法


提前感谢您的帮助。

只需使用适当的工具
dirname
basename
链接在一起:

echo $(basename $(dirname /transfer/IN/name/test.txt))
  • dirname
    =>
    /transfer/IN/name
  • basename
    =>
    name
sed
解决方案看起来更复杂,顺便说一句:

 sed -e "s#.*/\([^/]*\)/[^/]*#\1#" -e "s#/.*##" <<< name/test.txt
sed-e“s#.*/\([^/]*\)/[^/]*\1#”-e“s#/.*”这也应该有帮助:

awk -F'/' '{print $(NF-1)}' <<<"/a/b/c/d"
如果您喜欢使用sed:

sed 's#/[^/]*$##;s#.*/##' <<<"/a/b/c/d"

sed的#/[^/]*$#;可以使用参数展开法:

#!/bin/bash

path=/transfer/IN/name/test.txt
path1=${path%/*}           # Remove everything from the last /.
path1=${path1##*/}         # Remove everything up to the last /.
echo "$path1"
#!/bin/bash

path=/transfer/IN/name/test.txt
path1=${path%/*}           # Remove everything from the last /.
path1=${path1##*/}         # Remove everything up to the last /.
echo "$path1"