IT

파일 찾기 및 복사

lottoking 2020. 7. 23. 07:58
반응형

파일 찾기 및 복사


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

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

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

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

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


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

실제로 두 가지 방법으로 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 \;

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


for i in $(ls); do cp -r "$i" "$i"_dev; done;

그 오류의 이유는 -r 옵션이 필요한 폴더를 cp 감사합니다.

참고 URL : https://stackoverflow.com/questions/5241625/find-and-copy-files

반응형