答案1
发生这种情况是因为find
打印当前位置的完整路径(即包括src
)。您需要删除第一个路径组件,或者进一步进入目录结构以避免这种情况。
cd src && find . -name '*.json' -print0 | cpio -0pdm ../lib
答案2
你可以这样做:
find . -name '*json' |
while IFS= read -r file; do
mkdir -p lib/$(dirname "$file");
cp "$file" lib/"$(dirname "$file")"
done
或者,如果您的文件名可以包含换行符:
find . -name '*json' -print0 |
while IFS= read -d '' -r file; do
mkdir -p lib/$(dirname "$file");
cp "$file" lib/"$(dirname "$file")"
done