bash - 如何删除 JPG 文件,但前提是匹配的 RAW 文件存在?
问题描述
在 debian 终端上,如果 .cr2 存在于同一文件夹中,我尝试删除文件夹和子文件夹的所有 .jpg。
假设它们具有相同的名称。123.jpg 123.cr2
我知道如何使用 find 命令删除所有 .jpg。
find {PATH} -type f -name '*.jpg' -delete
但是如何添加条件(如果 .cr2 存在)
我发现了这个10y 主题,但它适用于 windows 和 python
解决方案
您可以尝试以下方法:
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
推荐阅读
- bash - 在文件的每一行上运行 curl 命令并下载文件
- java - How to draw a grid over google maps in android?
- python - account/list_of_post_by_subactegory.html TemplateDoesNotExist
- c# - cofoundry 0.40 hangfire 管理部分
- android - 避免 AndroidX Jetifier 日志垃圾邮件
- javascript - 如何通过ajax和php通过邮件发送两个单独的联系表格的数据?
- java - JavaFx 应用程序。右侧黑色
- bash - 如何访问之前在同一个 cloudbuild.yaml 文件中声明的变量
- ios - 无法为 IOS 构建 react-native-xmpp 库
- c++ - COM 服务器关闭时获取信号