날짜별로 구성된 디렉터리에 많은 .CR2 및 .ARW 파일이 혼합되어 있습니다(2016에는 폴더 06과 07이 있고 그 안에 매일 폴더가 있습니다. 예를 들어 파일은 2016/06/03에 있을 수 있습니다).
구조를 유지하면서 .ARW 파일을 별도의 폴더에 추출하고 싶습니다. 가능합니까?
즉, 구조가 동일한 두 개의 2016 폴더를 원하지만 그 중 하나에는 .ARW 파일만 있고 하나에는 .CR2 파일만 필요합니다.
답변1
이러한 rsync 명령은 요구 사항을 충족해야 합니다.
그러면 ARW가 실행됩니다.
rsync -arvz --progress --include='*.ARW' --include="*/" --exclude="*" ./source-dir-2016 ./target-ARW-2016
이것은 CR2를 수행합니다
rsync -arvz --progress --include='*.CR2' --include="*/" --exclude="*" ./source-dir-2016 ./target-CR2-2016
나는 사용했다이 게시물정보의 출처로.
답변2
find
exec
나는 다음을 사용하는 대안을 제안하고 싶습니다.cp --parents
find ./ -name *.ARW -exec cp --parents {} /home/user/target-ARW-dir/ \;
find ./ -name *.CR2 -exec cp --parents {} /home/user/target-CR2-dir/ \;
이에 대한 제한은 작업 디렉터리가 복사하려는 파일 구조 위에 있어야 한다는 것입니다.
그것이 무엇을 하는지에 대한 아이디어:
find
파일 찾기
./
찾을 디렉토리
-name *.ARW
.ARW로 끝나는 파일만 나열
-exec
반환된 파일 목록에서 명령을 실행합니다.
cp --parents
디렉터리 구조 복사 및 유지 관리
{}
파일별 보고서로 확장하면 다음 과 같이 find
생각됩니다 .x
for x in $files
/home/user/target-ARW-dir/
단지 샘플 디렉터리이므로 실제로 원하는 디렉터리로 변경해야 합니다.
\;
find -exec
for 루프처럼 동작하도록 a를 종료하는 올바른 방법
답변3
cp
dir 에서 a로 재귀적으로 이동한 2016
다음 main에서 시작하는 2016_ARW
것은 어떻습니까 ?rm *.CR2
rm *.ARW
예를 들어
user:~$ ls 2016/06/03/
file_one.ARW file_two.CR2 file_three.CR2 file_four.ARW file_five.ARW
user:~$ cp -R 2016 2016_ARW
user:~$ rm 2016_ARW/06/03/*.CR2
user:~$ rm 2016/06/03/*.ARW
user:~$ ls 2016/06/03/
file_two.CR2 file_three.CR2
user:~$ ls 2016_ARW/06/03/
file_one.ARW file_four.ARW file_five.ARW