2012-03-03 1 views

답변

46

는 "한 줄 명령/스크립트"로

cp file1 file2 ; cp file1 file3 

수를합니까? 어때요

for file in file2 file3 ; do cp file1 "$file" ; done 

? "복사"의 약간 느슨한 감각

또는는 :

for target in file2 file3 do; cp file1 "$target"; done 

더러운 해킹은 다음과 같습니다

tee <file1 file2 file3 >/dev/null 
+8

더하기 하나의 'tee' – knittl

+4

'tee file2 file3' – jfs

+2

@JFSebastian : 네, OP가 분명히 두 개의 대상 파일 이상에서 작동하기를 원하기 때문에 지원 양식을 강조하는 양식을 사용했습니다. 그. 어쩌면 나는'tee file2 file3 file4'을 작성해야하고 두 파일 병렬 처리가 필요하지 않을까요? – ruakh

0

내가 생각할 수있는 가장 간단한/가장 빠른 해결책은 루프입니다 다음과 같다. (나는 강력히 권하고, 배시에서는 어쨌든 작동한다.) :

eval 'cp file1 '{file2,file3}';' 
0

표준 스크립팅 명령 대신에 S :

배쉬 :

for i in file2 file3 ; do cp file1 $i ; done 
2
for FILE in "file2" "file3"; do cp file1 $FILE; done 
1

사용할 수 shift : 다음과 같은

file=$1 
shift 
for dest in "[email protected]" ; do 
    cp -r $file $dest 
done 
+1

'shift '의 효과는 무엇입니까? –

0

사용 뭔가. 그것은 zsh에서 작동합니다.

고양이 파일> firstCopy> secondCopy> thirdCopy

또는

고양이 파일> {1..100} - 숫자 파일 이름을.

작은 파일에는 적합합니다.

큰 파일의 경우 앞서 언급 한 cp 스크립트를 사용해야합니다. 단지 재미를 위해

+1

쉘이'zsh' 인 것으로 가정합니다. –

+0

// 이것은 Bash에서는 작동하지 않습니다. –

+0

파일의 크기가 중요한 이유는 무엇입니까? RAM 크기에 의해 제한됩니까? –

1

, 당신은 파일의 큰 목록을 필요로하는 경우 :

tee <sourcefile.jpg targetfiles{01-50}.jpg >/dev/null-Kelvin Feb 12 at 19:52

하지만 약간 오타가 있습니다. 해야합니다 권한을 복사하지 않습니다 tee <sourcefile.jpg targetfiles{01..50}.jpg >/dev/null

그리고 위에서 언급 한 바와 같이

.