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

如何使用rm命令反向匹配删除非R1.fastq.gz的文件?

用rm命令反向匹配删除文件的方法

好问题!要删除当前目录下所有**不匹配R1.fastq.gz**的文件,有几种实用的方法,根据你的shell和需求来选:

方法1:Bash扩展通配符(最直接)

Bash自带extglob扩展语法,能轻松实现反向匹配。如果你的Bash默认没开启这个扩展,先执行:

shopt -s extglob

然后执行删除命令:

rm !(*R1.fastq.gz)
  • 解释:!()是反向匹配的标记,括号里的*R1.fastq.gz表示要保留的文件模式(这里是所有文件名包含R1.fastq.gz的文件),命令会删除所有不符合这个模式的文件。
  • 重要提醒:先别着急删!先用ls !(*R1.fastq.gz)预览一下要删除的文件,确认无误再执行rm。

如果是要精确保留R1.fastq.gz这一个文件(不是包含该字符串的文件),把命令改成:

rm !("R1.fastq.gz")

方法2:Find命令(更灵活)

如果需要跨目录操作,或者想更精准地过滤文件类型,find命令是更好的选择:

find . -maxdepth 1 -type f ! -name "*R1.fastq.gz" -delete
  • 参数解释:
    • -maxdepth 1:只在当前目录操作,不深入子目录
    • -type f:只处理普通文件,避免误删目录
    • ! -name "*R1.fastq.gz":反向匹配文件名,排除符合模式的文件
    • -delete:执行删除操作
  • 同样建议先预览:去掉-delete,换成-print查看要删除的文件列表:
find . -maxdepth 1 -type f ! -name "*R1.fastq.gz" -print

额外注意事项

  • 如果你用的是Zsh,反向匹配语法更简单:rm ^*R1.fastq.gz(精确匹配单个文件用rm ^"R1.fastq.gz")
  • 永远先预览再删除!误删文件的代价很高,一定要确认待删文件列表正确后再执行删除命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:29:46