하나의 명령으로 파일을 찾고 기존 폴더가 아닌 폴더에 복사하는 방법은 무엇입니까?

하나의 명령으로 파일을 찾고 기존 폴더가 아닌 폴더에 복사하는 방법은 무엇입니까?

예를 들어:

find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;

기존 디렉터리 txt가 있는 경우에는 잘 작동합니다.

내가 이해할 수 있는 한-cp에는 플래그가 없습니다이 사건을 해결하기 위해. rsync나 다른 것을 사용해야 할까요?

답변1

좋은 질문입니다. 다음을 시도해 볼 수 있습니다.
먼저 cd에서 절대 경로(예 : ) /usr를 사용하면 전체 경로가 포함될 것으로 예상되기 때문입니다./usrfind{}

find . -type f -a -name "*.txt" -a -exec install -D {} ~/texts/{} \;

이 명령을 실행하면 다음과 같은 오류 메시지가 나타납니다.

찾기: './share/doc/google-chrome-stable': 권한이 거부되었습니다.

오류 메시지는 작업이 전체적으로 실패했음을 의미하는 것이 아니라 find디렉터리에서 명령을 실행할 수 없다는 의미일 뿐입니다 ./share/doc/google-chrome-stable.
그러나 나에게는 다른 모든 파일과 해당 경로가 복사되었고 필요에 따라 디렉토리 경로가 생성되었습니다.

추가 조사 결과 오류의 원인은 다음과 같습니다.

% ls -al --directory ./share/doc/google-chrome-stable 
drwx------ 2 root root 4096 Aug 21 12:45 ./share/doc/google-chrome-stable

관련 정보