如何在Debian终端中仅删除存在同名CR2文件的JPG文件(含子目录)
解决方案:Debian终端下删除对应存在CR2文件的JPG
我来帮你搞定这个需求!你可以用find结合shell脚本的方式来完成,既安全又能精准匹配条件。直接用下面的命令就行,记得把{PATH}换成你实际要操作的文件夹路径:
find {PATH} -type f -name '*.jpg' -exec sh -c ' # 遍历所有找到的jpg文件 for jpg do # 替换后缀,得到对应的cr2文件路径 cr2="${jpg%.jpg}.cr2" # 检查同目录下是否存在这个cr2文件 if [ -f "$cr2" ]; then # 如果存在就删除jpg,-v参数可以显示删除的文件,方便确认 rm -v "$jpg" fi done ' sh {} +
命令细节解释:
find {PATH} -type f -name '*.jpg':遍历指定路径下所有的JPG普通文件-exec sh -c '...' sh {} +:把找到的所有JPG文件批量传递给后面的shell脚本处理,比逐个处理效率更高${jpg%.jpg}.cr2:这是shell的参数替换语法,%.jpg会去掉文件名末尾的.jpg,再加上.cr2就得到了同名的CR2文件路径[ -f "$cr2" ]:检查这个CR2文件是否真实存在且是普通文件,避免误删
安全测试建议:
在正式执行删除前,建议先把rm -v换成echo,这样可以先预览哪些文件会被删除,确保逻辑正确:
find {PATH} -type f -name '*.jpg' -exec sh -c ' for jpg do cr2="${jpg%.jpg}.cr2" if [ -f "$cr2" ]; then echo "即将删除: $jpg" fi done ' sh {} +
确认没问题后,再换回rm -v执行删除操作就可以啦!
内容的提问来源于stack exchange,提问作者overer
相关产品推荐
相关产品推荐

