首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用bash返回设置点后的所有路径?

如何使用bash返回设置点后的所有路径?
EN

Stack Overflow用户
提问于 2014-12-12 18:06:36
回答 2查看 27关注 0票数 0

我要把这个还回去:

代码语言:javascript
复制
./nas/cdn/catalog/swatches
./nas/cdn/catalog/product_shots
./nas/cdn/catalog/product_shots/high_res
./nas/cdn/catalog/product_shots/high_res/back
./nas/cdn/catalog/product_shots/high_res/front
./nas/cdn/catalog/product_shots/low_res
./nas/cdn/catalog/product_shots/low_res/back
./nas/cdn/catalog/product_shots/low_res/front
./nas/cdn/catalog/product_shots/thumbs
./nas/cdn/catalog/full_length
./nas/cdn/catalog/full_length/high_res
./nas/cdn/catalog/full_length/low_res
./nas/cdn/catalog/cropped
./nas/cdn/catalog/drawings

从这里删除./nas/cdn/catalog/的正确方法是什么?

到目前为止,这是我的代码。

代码语言:javascript
复制
BASE='./nas/cdn/catalog'
echo $BASE
for d in $(find . -type d -regex "${BASE}/[^.]*")
do
    echo $(basename $d)

done

bit --这只是返回最后一个文件夹,我喜欢返回/swatches、/product/high_res等.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-12 18:10:46

像下面这样使用sed

代码语言:javascript
复制
BASE='./nas/cdn/catalog'
echo $BASE
for d in $(find . -type d -regex "${BASE}/[^.]*")
do
    sed 's~^\([^/]*/\)\{4\}~~' <<< "$d"
done

示例:

代码语言:javascript
复制
$ var="./nas/cdn/catalog/drawings"
$ sed 's~^\([^/]*/\)\{4\}~~' <<< "$var"
drawings
票数 1
EN

Stack Overflow用户

发布于 2014-12-12 18:14:49

一种稍微简单一些的方法:

代码语言:javascript
复制
BASE='./nas/cdn/catalog'
echo "$BASE"
( cd "$BASE" ; find */ -type d )

注意:这不是完全健壮的;当$BASE中的任何目录都以连字符开头时,它就会失败。只有当您能够保证不存在这种情况时,才应该使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27449527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档