如何删除Faces目录中与Faces_v2重复的文件及对应目录?
清除Faces目录中与Faces_v2重复的文件及目录
场景说明
我有两个目录Faces和Faces_v2,误将本该放入Faces_v2的文件粘贴到了Faces目录中,现在需要删除Faces里所有在Faces_v2已存在的文件,甚至是完全重复的子目录(比如livecpk/Faces/Asset/model/character/face/real/153809这类,对应目录在Faces_v2中完整存在)。
通过fdupes已查出重复文件,输出结果如下:
383051 bytes each: livecpk/Faces_v2/Asset/model/character/face/real/153809/sourceimages/#windx11/face_srm.ftex livecpk/Faces/Asset/model/character/face/real/153809/sourceimages/#windx11/face_srm.ftex 6410 bytes each: livecpk/Faces_v2/Asset/model/character/face/real/153809/sourceimages/#windx11/eye_occlusion_alp.ftex livecpk/Faces/Asset/model/character/face/real/153809/sourceimages/#windx11/eye_occlusion_alp.ftex 327654 bytes each: livecpk/Faces_v2/Asset/model/character/face/real/153809/sourceimages/#windx11/face_bsm_alp.ftex livecpk/Faces/Asset/model/character/face/real/153809/sourceimages/#windx11/face_bsm_alp.ftex 452968 bytes each: livecpk/Faces_v2/Asset/model/character/face/real/110651/sourceimages/#windx11/face_trm.ftex livecpk/Faces/Asset/model/character/face/real/110651/sourceimages/#windx11/face_trm.ftex 640680 bytes each: livecpk/Faces_v2/Asset/model/character/face/real/110651/sourceimages/#windx11/face_srm.ftex livecpk/Faces/Asset/model/character/face/real/110651/sourceimages/#windx11/face_srm.ftex 849208 bytes each: livecpk/Faces_v2/Asset/model/character/face/real/110651/sourceimages/#windx11/face_bsm_alp.ftex livecpk/Faces/Asset/model/character/face/real/110651/sourceimages/#windx11/face_bsm_alp.ftex
目标删除Faces下的重复目录:
livecpk/Faces/Asset/model/character/face/real/153809livecpk/Faces/Asset/model/character/face/real/110651
解决方案
方法1:基于fdupes结果批量删文件+清空目录
适合先精准删除重复文件,再自动清理空目录:
- 从fdupes输出中提取
Faces目录下的重复文件,保存到临时文件:
(将grep "livecpk/Faces/" fdupes_output.txt > to_delete.txtfdupes_output.txt替换为你实际保存fdupes结果的文件名) - 批量删除这些重复文件:
xargs rm -v < to_delete.txt - 清理
Faces下所有空目录(包括删除文件后变空的目标目录):find livecpk/Faces/ -type d -empty -delete
方法2:直接删除确认完全重复的子目录
如果已确认某个Faces子目录在Faces_v2中完全存在,可直接删除:
- 先验证目标目录在
Faces_v2中是否存在:[ -d "livecpk/Faces_v2/Asset/model/character/face/real/153809" ] && echo "目录存在" - 确认无误后删除目录及所有内容:
注意:rm -rf livecpk/Faces/Asset/model/character/face/real/153809 rm -rf livecpk/Faces/Asset/model/character/face/real/110651rm -rf会直接删除目录及所有内容,执行前务必确认目录内文件均为重复内容!
方法3:用rsync反向清理(安全批量处理)
适合批量处理所有重复内容,先在临时目录验证结果再替换原目录:
rsync -av --delete --compare-dest=../Faces_v2/ livecpk/Faces/ livecpk/temp_Faces/
参数说明:
--compare-dest=../Faces_v2/:以Faces_v2为基准对比重复内容--delete:删除临时目录中与Faces_v2重复的文件和目录
执行完成后,temp_Faces中仅保留Faces独有的文件,检查无误后替换原目录:
rm -rf livecpk/Faces/ && mv livecpk/temp_Faces/ livecpk/Faces/
内容的提问来源于stack exchange,提问作者Liso
相关产品推荐
相关产品推荐

