按扩展名拆分混合目录的最佳方法?

按扩展名拆分混合目录的最佳方法?

我有一个包含多种文件类型的目录树,我想将此目录拆分为相同的目录结构,仅包含一种文件类型。

什么是最好的方法?

示例:之前

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/'

相关内容