我试图获取最近的名为foo
的父目录的路径:
/this/is/the/path/to/foo/bar/baz
yields
/this/is/the/path/to/foo
知道我是怎么做到的吗?
答案 0 :(得分:2)
使用BASH字符串操作:
p='/this/is/the/path/to/foo/bar/baz'
name='foo'
r="${p%/$name/*}/$name"
echo "$r"
/this/is/the/path/to/foo
或者更好的是使用:
p='/this/is/afoo/food/path/to/foo/bar/baz'
echo "${p/\/$name\/*/\/$name}"
/this/is/afoo/food/path/to/foo
答案 1 :(得分:0)
试试这个:这个操作(使用%符号)将删除foo之后的任何内容(如果它位于右侧的变量 var 中),然后用foo后缀。
echo ${var%/foo/*}foo
或
echo ${var/\/foo\/*/\/foo}
从上面的命令中删除 foo (最后)将给出第一次出现foo文件夹的父文件夹。包括foo会给你第一个foo文件夹作为父文件。
PS :如果路径中没有“/ foo /”文件夹,那么,上面的echo命令将输出给定路径的值(即$ var),也就是它'为你的目的输出错误的输出 OR 它只有在给定的路径,即$ var / foo 的情况下才能正常工作。