확장별로 혼합 디렉터리를 분할하는 가장 좋은 방법은 무엇입니까?

확장별로 혼합 디렉터리를 분할하는 가장 좋은 방법은 무엇입니까?

여러 파일 형식이 포함된 디렉터리 트리가 있고 이 디렉터리를 하나의 파일 형식만 포함하는 동일한 디렉터리 구조로 분할하고 싶습니다.

가장 좋은 접근 방식은 무엇입니까?

예: 이전

dir1 -- dir2 foo.jpg
        dir3 foo.mpg

뒤쪽에

foo_jpg -- dir1 -- dir2 foo.jpg
                   dir3

foo_mpg -- dir1 -- dir2
                   dir3 foo.mpg

답변1

먼저 하드 링크를 사용하여 속도를 높이고 많은 디스크 공간을 차지하지 않도록 트리 복사본을 두 개 만듭니다.

mkdir foo_jpg foo_mpg
cp -al dir1 foo_jpg
cp -al dir1 foo_mpg

그런 다음 트리에서 필요하지 않은 항목을 제거하세요.

find foo_jpg -type f ! -name '*.jpg' -delete
find foo_mpg -type f ! -name '*.mpg' -delete

이제 디렉터리 구조와 요청된 파일만 포함하는 2개의 트리가 있습니다. 원본 트리를 삭제하는 옵션이 있습니다.

답변2

나는 이 대답을 찾았습니다:

rsync --recursive --include='*.jpg' --filter='-! */' '/dir1' '/foo_jpg/'

관련 정보