复制文件和文件结构并合并到新目录中

复制文件和文件结构并合并到新目录中

我使用了以下命令行

find src -name '*.json' | cpio -pdm lib

所以它找到了 json 文件,如下面的截图所示

截图1

但随后它会获取整个目录结构并将其放入 lib 文件夹中:

截图二

我的目标是将文件及其目录文件结构 (src -> server -> data -> diceware.json) 合并到新文件夹 (lib -> server -> data -> diceware.json)

也许有人可以帮忙

答案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

相关内容