특정 파일이 포함되지 않은 하위 디렉터리를 다른 디렉터리로 복사

특정 파일이 포함되지 않은 하위 디렉터리를 다른 디렉터리로 복사

dir1나는 이라는 이름의 약 800개의 하위 디렉터리를 포함하는 이라는 디렉터리를 가지고 있습니다 disp-001, disp-002, ... disp-800. stdout주어진 솔루션에 따라 파일이 포함되지 않은 하위 디렉터리 목록을 가져오고 있습니다 .여기~처럼

$ find . -type d \! -exec test -e '{}/stdout' \; -print

이제 파일이 포함되지 않은 하위 디렉터리를 다른 디렉터리인 dir2에 복사하려고 합니다. 나는 이것을 달성하기 위해 xargs를 사용합니다

$ find . -type d \! -exec test -e '{}/stdout' \; -print |xargs -I cp -r {} ../dir2

그러나 이로 인해 오류가 발생합니다.xargs: {}: No such file or directory

이 하위 디렉터리를 다른 디렉터리로 복사하는 방법

답변1

필요하지 않습니다 xargs. find처리할 수 있습니다.

find . -mindepth 1 -type d \! -exec test -e '{}/stdout' \; -exec echo cp -r '{}' ../dir2 \;

또는 비슷한 작업을 수행하는 find최신 버전을 사용하십시오 (또는 끔찍하게도 800개의 포크!).\+findxargs

  • -mindepth 1이 폴더를 제외 해야 합니다 ./. 그렇지 않으면 모든 하위 디렉터리가 복사됩니다.
  • 이 명령 에는 복사를 수행하기 전에 어떤 프로세스가 실행되고 있는지 확인하는 -exec디버그 옵션이 포함되어 있습니다.echo

관련 정보