파일 찾기 및 복사


128

다음은 왜 파일을 대상 폴더에 복사하지 않습니까?

# 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'

답변:


273

발견 된 파일을 / home / shantanu / tosend로 복사하려는 경우 cp에 대한 인수 순서가 반대로됩니다.

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

참고 : find 명령 은 일치하는 파일의 자리 표시 자로 {} 를 사용 합니다.


14
의 목적은 \;무엇입니까?
Astrid

5
@Astrid 이것을 확인 하십시오
shellbye

find -iname '*.mp3' -mtime -1 -exec cp {} /home/my_path/ \;이 명령에 문제가 있습니까? 작동하지 않습니다
mrid

2
결과에 경로에 공백이 있으면 작동하지 않습니다. 이것에 대한 제안?
TheJeff

1
우분투 18에서는 중괄호도 작은 따옴표로 묶어야합니다. find -iname '* .mp3'-mtime -1 -exec cp '{}'/ home / my_path / \;
p6majo

32

나는 이와 같은 문제에 직면했다 ...

실제로 두 가지 방법으로 find명령에서 copy명령 출력을 처리 할 수 ​​있습니다.

  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 \;

3. GNU이있는 경우 find/ xargs, find <Path> <Conditions> -print0 | xargs -0 -r cp -t <copy file path>. 예 :find -mtime -1 -type f -print0 | xargs -r0 cp -t inner/
Toby Speight

7

cp -t /home/shantanu/tosend인수가 소스가 아니라 대상 디렉토리임을 알리기 위해 사용해야 합니다. 그런 다음 가능한 한 많은 파일을 한 번에 복사 -exec ... +하기 위해로 변경할 수 있습니다 cp.


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

3
상단 답변과 같이 완전한 명령이 제공되면이 답변을 개선하고 단축 할 수 있습니다.
Brian


-2

그 오류의 이유는 -r 옵션이 필요한 폴더를 cp Thanks에 복사하려고하기 때문입니다.


3
안녕하세요, 질문에 이미 답변이 되었기 때문에 (이것은 실제로 관련 답변이 아닙니다.) 확장하고 설명하지 않으려는 경우 의견이 있어야합니다 (대리인이 더있을 때). 그냥 머리 위로 :).
W1ll1amvl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.