首页 > 解决方案 > 如何获取使用`find`找到的最后一个文件夹的名称

问题描述

我有一个包含多个组件的文件夹结构:

src-/
    |-components-/
                 |-componentA
                 |-componentB
                 |-componentC

我想找到每个组件文件夹,对其执行命令,并使用文件夹名称作为我dist/目录中每个输出文件夹的名称。所以它应该是这样的:

dist-/
     |-componentA
     |-componentB
     |-componentC

目前我正在运行以下命令:

BABEL_ENV=cjs find src/components/** -type d -exec babel {} --out-dir dist/{} \;

但是,这给了我里面的完整文件路径{},所以结果如下:

src/components/componentA/index.js -> dist/src/components/componentA/index.js

我希望结果是:

src/components/componentA/index.js -> dist/componentA/index.js

我怎样才能做到这一点?

提前致谢

标签: bash

解决方案


请尝试以下方法:

while read -r -d "" path; do
    basename=${path##*/}    # will remove "src/components/" portion
    BABEL_ENV=cjs babel "$path" --out-dir "dist/$basename"
done < <(find src/components/* -type d -print0)

它将输出传输到修改路径名以满足您的要求find的循环。while


推荐阅读