여러 파일과 디렉터리가 있는 디렉터리가 있습니다. 디렉토리와 그 내용을 모두 여러 디렉토리에 복사하려면 어떻게 해야 합니까? 즉, 동일한 콘텐츠를 여러 디렉터리에 복사해야 합니다.
답변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 구문에서 -a
GNU 옵션을 사용하여 모든 것을 복사합니다.)cp
명령이 실패할 경우 어떻게 해야 할지 고려해 볼 수 있습니다 cp
. 즉, 루프를 중단하고 전체 종료 상태에 이를 보고합니다...
자신은 복사하지 않고 내용만 복사하려면 로 dir
바꾸세요 ."$srcdir"
"$srcdir/."
zsh
(및 tar
taring 전에 디렉토리를 입력하는 옵션을 지원하는 구현 -C
) 을 사용하면 cd
다음을 수행할 수도 있습니다.
tar -C $srcdir -cf - . > >(tar -C dir1 -xpf -) \
> >(tar -C dir2 -xpf -) \
> >(tar -C dir3 -xpf -)
$srcdir
내용을 한 번만 읽고티추출은 동시에 실행되는 세 가지 명령을 통해 수행됩니다 tar
.