我要把这个还回去:
./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/的正确方法是什么?
到目前为止,这是我的代码。
BASE='./nas/cdn/catalog'
echo $BASE
for d in $(find . -type d -regex "${BASE}/[^.]*")
do
echo $(basename $d)
donebit --这只是返回最后一个文件夹,我喜欢返回/swatches、/product/high_res等.
发布于 2014-12-12 18:10:46
像下面这样使用sed,
BASE='./nas/cdn/catalog'
echo $BASE
for d in $(find . -type d -regex "${BASE}/[^.]*")
do
sed 's~^\([^/]*/\)\{4\}~~' <<< "$d"
done示例:
$ var="./nas/cdn/catalog/drawings"
$ sed 's~^\([^/]*/\)\{4\}~~' <<< "$var"
drawings发布于 2014-12-12 18:14:49
一种稍微简单一些的方法:
BASE='./nas/cdn/catalog'
echo "$BASE"
( cd "$BASE" ; find */ -type d )注意:这不是完全健壮的;当$BASE中的任何目录都以连字符开头时,它就会失败。只有当您能够保证不存在这种情况时,才应该使用它。
https://stackoverflow.com/questions/27449527
复制相似问题