我有一个包含多种文件类型的目录树,我想将此目录拆分为相同的目录结构,仅包含一种文件类型。
什么是最好的方法?
示例:之前
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/'