파일을 찾아서 복사하면 폴더 구조가 그대로 유지됩니다

파일을 찾아서 복사하면 폴더 구조가 그대로 유지됩니다

지난 60분 이내에 생성되거나 수정된 ​​파일을 검색하고 있습니다. 나는 이것을 통해 이것을 찾았습니다

find ~/data/ -cmin -60 -mmin -60 -type f

~메인 디렉토리/usr/wg/

나중에 이 파일을 복사하고 기본 폴더 구조를 유지하고 싶습니다... find 명령의 결과는 예를 들어...

/usr/wg/data/foo1/file1.txt
/usr/wg/data/foo2/bar2/file2.txt
...

이제 내가 사용할 때

rsync -a `find ~/data/ -cmin -60 -mmin -60 -type f` ~/vee/

~/vee/내가 얻는 폴더에서

/usr/wg/vee/usr/wg/data/foo1/file1.txt
/usr/wg/vee/usr/wg/data/foo2/bar2/file2.txt
...

내가 원하지만

/usr/wg/vee/foo1/file1.txt
/usr/wg/vee/foo2/bar2/file2.txt
...

어떻게 이를 달성할 수 있나요? 내가 찾고 있어요

  1. 폴더 구조를 유지하면서 수정된 파일을 복사하는 방법
  2. https://serverfault.com/questions/180853/how-to-copy-file-preserving-directory-path-in-linux
  3. https://stackoverflow.com/questions/1650164/bash-copy-named-files-recursively-preserving-folder-struct

그리고 몇 가지 다른 답변이 있지만 정답을 얻지 못하는 것 같습니다.

답변1

다음과 같이 명령을 다시 작성해야 합니다.

cd ~/data; find . -cmin -60 -mmin -60 -type f

상대 경로 찾기에서 얻을 수 있습니다.

어쩌면 좋아

find ...  -exec cp -r "{}" ../vee/ \; 

하위 디렉터리 구조의 파일 복사가 수행됩니다.

답변2

스위치를 사용할 수 있습니다 --parents.

cd ~/data; find . -cmin -60 -mmin -60 -type f -exec cp --parents "{}" ~/vee/

~에서매뉴얼 페이지:

--parents
use full source file name under DIRECTORY

즉, 경로 결과를 얻을 때:

./foo1/file1.txt
./foo2/bar2/file2.txt

cp입력 파일의 전체 경로가 사용되며 다음과 같이 대상 경로에 추가됩니다.

~/vee/./foo1/file1.txt
~/vee/./foo2/bar2/file2.txt

이 디렉터리 구조를 다시 만듭니다.

관련 정보