저는 Debian GNU/Linux를 사용하고 있습니다.
다음 명령을 실행했습니다.
mkdir code
cp -Rf code code{1..255}
첫 번째 cmd는 다음과 같은 디렉터리를 만듭니다.암호.
두 번째 명령의 목적은 이름이 지정된 폴더를 복사하는 것입니다.암호도착하다코드 1-코드 255'
그 목적은 폴더 코드를 255번 복사하는 것입니다.
대신 다음과 같이 말합니다.
cp: target 'code255' is not a directory...
왜 이것이 작동하지 않습니까? ? ?
touch file{1..255} works fine!
그래서 왜 안돼 cp
?
해결책은 무엇입니까?
=(
답변1
이 명령의 구문은 다음 cp
과 같습니다.
cp [options] file copy-of-file
또는
cp [options] file1 file2... directory-to-copy-files-into
즉, 다음이 될 수 있습니다.에게 복사또는에게 복사.
위의 첫 번째 개요에서는 둘 중 하나일 수 있습니다. 그것이 무엇인지는 copy-of-file
그것이 이미 존재하는지, 디렉토리(또는 디렉토리에 대한 심볼릭 링크)인지에 따라 달라집니다.에게 복사아니면 그렇지 않은 경우입니다.에게 복사1.
두 번째 요약은 항상에게 복사. directory-to-copy-files-into
존재하지 않거나 디렉터리가 아닌 경우 오류 메시지가 표시됩니다.
귀하의 경우 쉘이 확장됩니다.
cp -Rf code code{1..255}
도착하다:
cp -Rf code code1 code2 ... code255
그렇다면 당신은 두 번째 상황에 속합니다.에게 복사code255
, , ..., 파일을 복사할 수 있는 디렉토리가 아닌 것으로 나타나 오류가 발생합니다 cp
.code
code
code254
어떤 경우에도 cp
파일의 여러 복사본이 만들어지지 않습니다. 여기에서는 cp
루프 등을 사용하여 만들고 싶은 각 복사본을 호출해야 합니다 .
zsh
쉘 사용 ( {1..255}
이 구문의 소스):
for f (code{1..255}) cp -R code $f
또는 bash
쉘을 사용하면(이 {1..255}
연산자 복사) 데비안의 기본 사용자 대화형 쉘이므로 아마도 이것을 사용하고 있을 것입니다:
for f in code{1..255}; do cp -R code "$f"; done
다른 옵션에는 다음이 포함됩니다 xargs
.
seq 255 | xargs -I{} cp -R code code{}
또는 POSIXly(최신 sh
구현에서):
i=1; while [ "$i" -le 255 ]; do cp -R code "code$i"; i=$((i + 1)); done
1, 하나에게 복사cp file dir/
시행은 with 또는 with 의 GNU 구현을 통해 수행될 수 있습니다 . ㅏcp
cp -t dir file
에게 복사GNU를 통해 cp
시행 가능cp -T file copy-of-file