如何将folder1中未存在于folder2的JPG文件批量移动至folder2?
用Unix命令移动folder1中未在folder2存在的JPG文件
方法一:用rsync(推荐,简洁高效)
rsync是处理文件同步/迁移的利器,这条命令会只移动folder1中folder2没有的JPG文件:
rsync -av --ignore-existing --include='*.jpg' --exclude='*' folder1/ folder2/
参数说明:
-a:归档模式,保留文件权限、时间戳等属性-v:显示详细操作日志,方便查看进度--ignore-existing:跳过folder2中已存在的文件--include='*.jpg':仅包含JPG文件--exclude='*':排除所有其他类型文件folder1/:注意末尾的斜杠,表示同步folder1目录内的内容,而非目录本身;如果不加斜杠,会把folder1整个移到folder2里
方法二:用find+mv(适合需要更灵活过滤的场景)
如果需要只处理folder1下的直接文件(不递归子目录):
find folder1 -maxdepth 1 -type f -name "*.jpg" ! -exec test -e "folder2/{}" \; -exec mv "{}" folder2/ \;
如果需要递归处理folder1的子目录中的JPG文件,去掉-maxdepth 1即可:
find folder1 -type f -name "*.jpg" ! -exec test -e "folder2/{}" \; -exec mv "{}" folder2/ \;
参数说明:
-type f:只处理普通文件(排除目录)-name "*.jpg":匹配所有JPG后缀的文件! -exec test -e "folder2/{}" \;:判断当前文件在folder2中不存在-exec mv "{}" folder2/ \;:将符合条件的文件移动到folder2
注意事项
- 如果文件名包含空格或特殊字符,上述命令都能正常处理,因为使用了双引号包裹路径
- 执行命令前可以先把
mv换成echo,预览要移动的文件列表,确认无误后再替换回mv
内容的提问来源于stack exchange,提问作者Micah
相关产品推荐
相关产品推荐

