从字符串中获取最后一个目录

时间:2018-05-15 08:57:31

标签: shell find

我试图在linux(tcsh)中提取分隔字符串的最后一部分。

例如: 我有一个字符串是/ dir1 / dir2 / dir3,输出应该只是dir3。

我想要实现的完整任务是: 我想找到遵循给定模式的目录名,但是“find”命令返回一个完整路径,而不仅仅是最后一个目录,这正是我想要的。此外,“find”命令的结果应该分成一个arry,以便稍后用脚本处理。

命令我用来查找目录:

find path -maxdepth 2 -type d -name "*abc*"

提前致谢, 佩德罗

1 个答案:

答案 0 :(得分:1)

您可能对命令basename

感兴趣
$ basename /dir1/dir2/dir3
dir3
  

man basename :   打印NAME并删除任何前导目录组件。

这可以与find合并为:

$ find path -maxdepth 2 -type d -name "*abc" -exec basename {} \;

或者您可以避免basename,只需将其传递给awk

$ find path -maxdepth 2 -type d -name "*abc" | awk -F'/' '{print $NF}'

但如果你真的想避免任何事情而只是使用find,你可以使用printf find语句作为:

$ find path -maxdepth 2 -type d -name "*abc" -printf "%f\n"
  

man find %f删除了任何主要目录的文件名(仅限最后一个元素)。