여러 파일 형식이 포함된 디렉터리 트리가 있고 이 디렉터리를 하나의 파일 형식만 포함하는 동일한 디렉터리 구조로 분할하고 싶습니다.
가장 좋은 접근 방식은 무엇입니까?
예: 이전
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/'