bash - 如何获取使用`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
我怎样才能做到这一点?
提前致谢
解决方案
请尝试以下方法:
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