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

Bash下批量重命名文件:移除双下划线及之前内容

Bash批量重命名:移除双下划线(__)及之前的内容

方法1:原生Bash参数扩展(无需额外工具)

直接用Bash自带的字符串处理功能循环处理,适配所有Bash环境:

for file in *.fastq.gz; do
  # 仅对包含__的文件执行操作
  if [[ "$file" == *__* ]]; then
    mv -- "$file" "${file##*__}"
  fi
done

解释:${file##*__} 是Bash参数扩展语法,##*__ 会贪婪匹配并移除从文件名开头到最后一个__的所有内容,直接保留后面的目标部分。

方法2:Perl版rename命令(推荐)

多数Linux发行版自带Perl版本的rename,用正则表达式批量处理更高效:

rename 's/.*__//' *.fastq.gz

解释:正则.*__匹配从文件名开头到最后一个__的全部字符,替换为空后直接得到目标文件名。

方法3:递归处理子目录文件

如果需要处理所有子目录下的对应文件,用find结合Bash命令实现:

find . -type f -name "*.fastq.gz" -exec bash -c '
  for file do
    if [[ "$file" == *__* ]]; then
      dir=$(dirname "$file")
      new_name="${file##*__}"
      mv -- "$file" "$dir/$new_name"
    fi
  done
' bash {} +

必做测试步骤

执行重命名前,把mv换成echo预览效果,确保逻辑正确再执行:

for file in *.fastq.gz; do
  if [[ "$file" == *__* ]]; then
    echo "$file" -> "${file##*__}"
  fi
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:14:53