2011-03-09 4 views
77

다음은 파일을 대상 폴더에 복사하지 않는 이유는 무엇입니까?파일 찾기 및 복사

# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} \; 

cp: omitting directory `/home/shantanu/tosend' 
cp: omitting directory `/home/shantanu/tosend' 
cp: omitting directory `/home/shantanu/tosend' 

답변

192

의도는 반대로 CP의 인수의 순서가 tosend// 가정/샨에 발견 된 파일을 복사하는 경우 :

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \; 

참고 :} {을 명령 사용 을 찾기 일치하는 파일의 자리 표시 자로 사용

+3

'\의 목적은 무엇인가로서 cp -r 옵션을 필요로하는 폴더를 복사하려고하는 점이다'를? – Astrid

+2

@Astrid 체크 [this] (http://unix.stackexchange.com/questions/12902/how-to-run-find-exec) – shellbye

+0

Ahh 내가 볼 @ 쉘비 - thanks – Astrid

6

cp -t /home/shantanu/tosend을 사용하면 인수가 대상 디렉토리이고 소스가 아니라고 알릴 수 있습니다. 가능한 한 많은 파일을 복사하려면 cp을 얻으려면 -exec ... +으로 변경하십시오. 나는이 같은 문제가 뭔가에 직면

+2

리눅스는 대상 디렉토리를 이렇게 지정해야했다 : 'find/home/shantanu/processed/-name '* 2011 * .xml'-exec cp --target-directory =/home/shantanu/tosend { } \;' – GuruM

+0

+1에 대한 유용한 답변 @Ignacio Vazquez-Abrams – GuruM

+3

전체 답변이 맨 위로 대답과 같이 제공되면이 답변을 개선하고 단축 할 수 있습니다. – Brian

22

...

사실, 두 가지 방법으로 당신이 copy 명령에 find 명령 출력을 처리 할 수있는 것은

  1. find 명령의 출력은 공간 즉, 포함되지 않은 경우 파일 이름에 공백이 포함되어 있지 않으면 다음 명령을 사용할 수 있습니다.

    구문 : find <Path> <Conditions> | xargs cp -t <copy file path>

    예 : find -mtime -1 -type f | xargs cp -t inner/

  2. 하지만 대부분의 제작 데이터 파일에는 공간이 포함될 수 있습니다. , find <path> <condition> -exec cp '{}' <copy path> \;

    find -mtime -1 -type f -exec cp '{}' inner/ \;

두 번째 예에서

이, 마지막 부분은 세미콜론도 find 명령의 일부로 간주됩니다 즉 :

구문 : 그래서 대부분의 시간은 아래의 명령은 안전 언급 Enter 버튼을 누르기 전에 이스케이프해야합니다. 그렇지 않으면 당신은 당신의 경우이

find: missing argument to `-exec' 

같은 오류 무언가를 얻을 것이다, 복사 명령 구문은 /home/shantanu/tosend에 파일을 찾을 복사하기 위해 잘못된 것입니다. 다음 명령은 작동합니다

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \; 
+0

3. GNU'find' /'xargs'를 가지고 있다면'find -print0 | xargs -0 -r cp -t <파일 경로 복사>'. 예 :'find -mtime -1 -type f -print0 | xargs -r0 cp -t inner /' –

-2

그 오류의 원인은 당신이 또한 감사

+3

안녕하세요, 질문에 이미 답이 있습니다 (잠시 후) 이것은 정말 관련 답변이 아니므로 원하는 경우가 아니라면 댓글이 있어야합니다 (더 많은 담당자가있을 때). 확장하고 설명하기. 그냥 위로 머리 :). – W1ll1amvl