首页 > 解决方案 > 如何删除 JPG 文件,但前提是匹配的 RAW 文件存在?

问题描述

在 debian 终端上,如果 .cr2 存在于同一文件夹中,我尝试删除文件夹和子文件夹的所有 .jpg。

假设它们具有相同的名称。123.jpg 123.cr2

我知道如何使用 find 命令删除所有 .jpg。

find {PATH} -type f -name '*.jpg' -delete

但是如何添加条件(如果 .cr2 存在)

我发现了这个10y 主题,但它适用于 windows 和 python

标签: bashfile-extension

解决方案


您可以尝试以下方法:

shopt -s globstar
for i in /path/**.jpg
do
RAW=${i%.jpg}.cr2
if [ -f "$RAW" ]
then rm "$i"
fi
done

如果您是 oneliners 的粉丝,您可以将脚本转换为以下内容:

shopt -s globstar; for i in /path/**.jpg; do [ -f "${i%.jpg}.cr2" ] && rm "$i"; done

推荐阅读