2017-01-02 10 views
-1

"file.txt"파일을 모든 디렉토리에 복사하려고합니다. 명령의 동작을 볼 탭을 사용하여왜 cp 명령에서 globbing을 사용하여 "디렉토리 생략"오류가 발생합니까?

[[email protected]]# ls -lh 
total 132K 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:47 ilo01 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:40 ilo02 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:40 ilo03 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:40 ilo04 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:40 ilo05 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:40 ilo06 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:40 ilo07 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 08:40 ilo08 
drwxr--r--. 2 postgres postgres 4.0K Jan 2 10:03 ilo09 
drwxr--r--. 11 postgres postgres 4.0K Jan 2 11:15 ilo10 
-rw-r--r--. 1 postgres postgres 64K Jun 27 2016 file.txt 

실행합니다 :

[[email protected]]# cp -p file.txt ilo[0-1][0-9] 
ilo01/ ilo02/ ilo03/ ilo04/ ilo05/ ilo06/ ilo07/ ilo08/ ilo09/ ilo10/ 

그러나 나는이 오류를 얻을 :

[[email protected]]# cp -p file.txt ilo* 
:

[[email protected]]# cp -v -p file.txt ilo[0-1][0-9]* 
`postgresTdas.txt' -> `ilo10/file.txt' 
cp: omitting directory `ilo01' 
cp: omitting directory `ilo02' 
cp: omitting directory `ilo03' 
cp: omitting directory `ilo04' 
cp: omitting directory `ilo05' 
cp: omitting directory `ilo06' 
cp: omitting directory `ilo07' 
cp: omitting directory `ilo08' 
cp: omitting directory `ilo09' 

같은 일이 함께 일을

[[email protected]]# cp -p file.txt ilo*/ 

왜 [0-1] [0-9]가 내가 원하는 방식으로 작동하지 않는지 이해할 수 없습니다.

TAB이 보여주는 목록에 file.txt를 넣을 것이라고 가정합니다.

무엇이 누락 되었습니까?

+2

'cp'는 하나 이상의 대상 디렉토리에 하나 이상의 파일을 복사하거나 하나의 대상 파일에 파일을 복사 할 수 있습니다. 단일 파일을 둘 이상의 대상으로 복사 할 수 없습니다. 파일을 모든 디렉토리에 복사하려면 루프를 만들어야합니다. – codeforester

+4

다음에서 답을 찾을 수 있습니다. http://stackoverflow.com/questions/195655/how-to-copy-a-file-to-multiple-directctories-using-the-gnu-cp-command – codeforester

+0

감사합니다. 나는이 질문에 대해 정말로 부끄럽다 :/ – manuelc

답변

2

대부분의 구현은 여러 대상에 복사 할 수 없습니다이다. 그것에 대해 할 수있는 일은 없습니다. 제한을 회피하여 cp 번을 호출해야합니다. 가장 쉬운 일은 아마도 다음과 같습니다 :

ls -d dir* | xargs -n 1 cp file.txt 
1

인수는 파일 + 모든 디렉토리

cp 대상으로 마지막 인수를 고려으로 확장, 그래서 다른 디렉토리를 소스로 간주됩니다.

그리고 -r 또는 -R 옵션 (복사 디렉토리를 내용을) 설정되어 있지 않으면 cp이 디렉토리를 복사하지 않기 때문에, 당신은 모든 디렉토리하지만 마지막에 경고를 얻을.

내가 대신 bash는/쉬 스크립트로 그렇게 할 것 다음 cp 명령의

for d in ilo[0-1][0-9] 
do 
    cp -p file.txt $d 
done 
+0

나는 하나님, 나는 버큐을 만들었다. 모든 답이 맞습니다. 나는 그가 그것을 먼저 반응했기 때문에 받아들이는 것을 arkascha에게 준다. 하지만 고마워. – manuelc

+0

1 시간 전이 사람이 얼마나 좋아 했습니까? 나는 먼저 대답했다. 그러나 원하는대로하십시오. 당신은 보스입니다 :) –