【问题标题】:How to get a string after the LAST "/" character? [duplicate]如何在最后一个“/”字符之后获取一个字符串? [复制]
【发布时间】:2021-09-18 05:19:48
【问题描述】:

我试图在最后一个“/”字符之后获取一个字符串。问题是,“/”的数量可以不同。例子:

Desktop/Picures/test.txt -> test.txt
Templates/DIR1/DIR2/DIR2/test2 -> test2
d1/d2/d3/d4/d5/d6 -> d6

...等等,你明白了。我怎样才能做到这一点? (顺便说一句,我也需要将结果设置为变量。)

【问题讨论】:

  • basename 应该是您所需要的。例如basename Templates/DIR1/DIR2/DIR2/test2 返回test2
  • @MichaelBerkowski 不太……除非我做错了什么?我尝试这样做 - new_variable=$basename "$variable" 然后我像这样回应它 - echo "this is" $new_variable,但我得到的只是“这是”,之后什么都没有。 (变量包含我要编辑的字符串)
  • @nana 的语法是new_variable=$(basename "$variable")。见How do I set a variable to the output of a command in Bash?
  • @thatotherguy 哦,好的,谢谢!

标签: bash


【解决方案1】:

使用参数扩展。

for path in Desktop/Picures/test.txt \
            Templates/DIR1/DIR2/DIR2/test2 \
            d1/d2/d3/d4/d5/d6 ; do
    echo "${path##*/}"
done

##*/ 从左边删除最长的匹配模式。模式是*/,即它将删除直到最后一个斜杠的所有内容。

【讨论】:

  • 是的,这很完美!
  • 请注意,这与basename "$path" 略有不同——如果变量“/”结尾,这将给出空字符串,而basename 将返回最后一个非空路径元素(例如basename /path/to/dir/ 将打印“dir”)。
猜你喜欢
  • 2011-11-18
  • 1970-01-01
  • 2011-07-07
  • 2011-08-17
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多