
다음과 같은 디렉토리 구조가 있습니다.
dirA/[파일A, someB, barC, fileD, someE, barF] dirB/[fileA, barC, someE]
dirB에 이미 있는 파일만 dirA에서 dirB로 복사하고 싶습니다. 이 선택적 복사를 어떻게 수행합니까?
답변1
예를 들어 -exec 옵션과 함께 find 명령을 사용할 수 있습니다. 아마도 다음과 같은 구문을 사용할 것입니다(dirB에서 실행해야 하며 재귀적이라는 점에 유의하세요).
find ./ -type f -exec cp '../dirA/{}' ./ \;
-type f는 find에게 일반 파일만 고려하라고 지시하고, -exec는 모든 파일에 대해 다음 명령을 실행한다고 말합니다. \; 마지막에는 실행할 명령이 종료됩니다. {}는 find를 통해 실제 파일 이름으로 대체되는 자리 표시자입니다. 자세한 내용과 기타 사용 예는 find의 매뉴얼 페이지를 확인하세요.
내 PC에서는 다음과 같은 일이 발생합니다.
desktop:~$ mkdir dirA
desktop:~$ mkdir dirB
desktop:~$ cd dirA
desktop:~/dirA$ touch foo bar this
desktop:~/dirA$ cd ..
desktop:~$ cd dirB
desktop:~/dirB$ touch bar this
desktop:~/dirB$ find ./ -type f -exec cp -v '../dirA/{}' ./ \;
»../dirA/./this“ -> »./this“
»../dirA/./bar“ -> »./bar“