You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Fish Shell脚本查找无对应图片的孤立.xmp/.pp3/.out.pp3文件

在Fish Shell中查找孤立的元数据文件

以下脚本可递归查找后缀为.xmp、.pp3、.out.pp3且无对应基础图片文件的文件,并将结果存入变量isolated_meta_files:

# 初始化结果变量
set isolated_meta_files ()

# 递归遍历目标后缀的文件
for file in (find . -type f \( -name "*.xmp" -o -name "*.pp3" -o -name "*.out.pp3" \))
    # 移除文件末尾的元数据后缀,得到对应的基础图片文件名
    set base_file (string replace -r '\.(xmp|pp3|out\.pp3)$' '' -- $file)
    
    # 检查基础图片文件是否不存在
    if not test -f "$base_file"
        # 将孤立的元数据文件加入结果变量
        set isolated_meta_files $isolated_meta_files "$file"
    end
end

代码说明

  • 查找目标文件:find . -type f \( -name "*.xmp" -o -name "*.pp3" -o -name "*.out.pp3" \) 递归扫描当前目录下所有符合后缀要求的普通文件。
  • 生成基础文件名:string replace 用正则匹配移除文件末尾的元数据后缀,确保得到对应的图片文件名(例如file_a.jpg.xmp会转为file_a.jpg,file_b.pp3转为file_b)。
  • 检查文件存在性:test -f "$base_file" 判断基础图片文件是否存在,not取反后将无对应图片的元数据文件加入结果变量。

验证示例

针对你给出的文件列表:

  • file_a.jpg.xmp、file_a.jpg.pp3 对应的基础文件file_a.jpg存在,不会被加入变量;
  • file_b.pp3 对应的基础文件file_b不存在,会被加入变量;
  • file_c.nef.xmp 对应的基础文件file_c.nef存在,不会被加入变量;
  • file_c.jpg.xmp 对应的基础文件file_c.jpg不存在,会被加入变量(若你示例中该文件确实无对应图片,需注意这一点)。

内容的提问来源于stack exchange,提问作者vato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:58:18