파일 및 파일 구조를 복사하고 새 디렉터리에 병합

파일 및 파일 구조를 복사하고 새 디렉터리에 병합

다음 명령줄을 사용했습니다.

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

그래서 아래 스크린샷과 같이 json 파일을 찾았습니다.

스크린샷 1

그러나 전체 디렉토리 구조를 가져와서 lib 폴더에 넣습니다.

스크린샷 2

내 목표는 파일과 해당 디렉터리 파일 구조(src -> 서버 -> 데이터 -> diceware.json)를 새 폴더(lib -> 서버 -> 데이터 -> diceware.json)에 병합하는 것입니다.

어쩌면 누군가가 도울 수 있을 것 같아요

답변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

관련 정보