답변:
발견 된 파일을 / home / shantanu / tosend로 복사하려는 경우 cp에 대한 인수 순서가 반대로됩니다.
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "{}" /home/shantanu/tosend \;
참고 : find 명령 은 일치하는 파일의 자리 표시 자로 {} 를 사용 합니다.
find -iname '*.mp3' -mtime -1 -exec cp {} /home/my_path/ \;
이 명령에 문제가 있습니까? 작동하지 않습니다
나는 이와 같은 문제에 직면했다 ...
실제로 두 가지 방법으로 find
명령에서 copy
명령 출력을 처리 할 수 있습니다.
경우 find
파일 이름이 공간을 포함하지 않는 경우 명령의 출력은 어떤 공간 즉 포함되어 있지 않습니다 당신은 아래에 언급 된 명령을 사용할 수 있습니다 :
통사론: find <Path> <Conditions> | xargs cp -t <copy file path>
예: find -mtime -1 -type f | xargs cp -t inner/
그러나 대부분의 프로덕션 데이터 파일에는 공간이 포함될 수 있습니다. 따라서 아래 언급 된 명령은 대부분 더 안전합니다.
통사론: 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 \;
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/
cp -t /home/shantanu/tosend
인수가 소스가 아니라 대상 디렉토리임을 알리기 위해 사용해야 합니다. 그런 다음 가능한 한 많은 파일을 한 번에 복사 -exec ... +
하기 위해로 변경할 수 있습니다 cp
.
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp --target-directory=/home/shantanu/tosend {} \;
\;
무엇입니까?