答え1
これは、find
現在の場所へのフルパスが印刷されるために発生します(例:inclusive 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