여러 대상 디렉터리에 디렉터리를 복사하는 방법은 무엇입니까?

여러 대상 디렉터리에 디렉터리를 복사하는 방법은 무엇입니까?

여러 파일과 디렉터리가 있는 디렉터리가 있습니다. 디렉토리와 그 내용을 모두 여러 디렉토리에 복사하려면 어떻게 해야 합니까? 즉, 동일한 콘텐츠를 여러 디렉터리에 복사해야 합니다.

답변1

cp혼자서는 불가능

cp다음으로만 복사하나목적지.

~에서남자 CP

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

따라서 각 대상에 대해 한 번씩, 명령을 두 번 실행해야 합니다.

다른 방법

그러나 다음을 사용하면 가능합니다.다른와 함께 명령을 사용하십시오 cp.

~에서Linux에서 파일을 여러 디렉터리에 복사하는 방법

xargs

echo directory_1 directory_2 | xargs -n 1 cp file_1

디렉토리의 경우 다음을 추가하십시오.-r

echo directory_1 directory_2 | xargs -n 1 cp -r source_directory

find

find directory1 directory2 -exec cp file.txt {} \;

디렉토리의 경우 다음을 추가하십시오.-r

find directory1 directory2 -exec cp -r source_directory {} \;

쉘의 루프

for dir in *; do [ -d “$dir” ] && cp /full_path/file.txt “$dir” ; done

디렉토리의 경우 다음을 추가하십시오.-r

for dir in *; do [ -d “$dir” ] && cp -r /full_path_to/source_directory “$dir” ; done

parallel

parallel cp -v /etc/resolv.conf ::: /directory1/, /directory2/

디렉토리의 경우 다음을 추가하십시오.-r

parallel cp -r source_directory ::: /directory1/, /directory2/

tee대신 사용cp

같은 링크에서

tee ~/directory1/file1 ~/directory2/file1 < ~/file1

또는

tee ~/directory1/file1 ~/directory2/file1 < ~/file1 >/dev/nul

답변2

내가 아는 모든 도구에는 대상이 하나뿐이므로 두 번만 실행하면 됩니다 cp(예 rsync: ).

cp -r dir target1
cp -r dir target2

답변3

dst 디렉토리 목록이 배열 변수에 있는 경우 루프를 사용해야 할 수도 있습니다 for.

srcdir=src/dir
dstdirs=( some/dir some/other/dir dir3 dir4 )
for dir in "${dstdirs[@]}"; cp -a -- "$srcdir" "$dir/"; done

(위의 zsh/bash/ksh93/mksh 구문에서 -aGNU 옵션을 사용하여 모든 것을 복사합니다.)cp

명령이 실패할 경우 어떻게 해야 할지 고려해 볼 수 있습니다 cp. 즉, 루프를 중단하고 전체 종료 상태에 이를 보고합니다...

자신은 복사하지 않고 내용만 복사하려면 로 dir바꾸세요 ."$srcdir""$srcdir/."

zsh(및 tartaring 전에 디렉토리를 입력하는 옵션을 지원하는 구현 -C) 을 사용하면 cd다음을 수행할 수도 있습니다.

tar -C $srcdir -cf - . > >(tar -C dir1 -xpf -) \
                       > >(tar -C dir2 -xpf -) \
                       > >(tar -C dir3 -xpf -)

$srcdir내용을 한 번만 읽고추출은 동시에 실행되는 세 가지 명령을 통해 수행됩니다 tar.

관련 정보