지난 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
...
어떻게 이를 달성할 수 있나요? 내가 찾고 있어요
- 폴더 구조를 유지하면서 수정된 파일을 복사하는 방법
- https://serverfault.com/questions/180853/how-to-copy-file-preserving-directory-path-in-linux
- 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
이 디렉터리 구조를 다시 만듭니다.