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

匹配后批量重命名目录求助:将1_20_xx格式目录改为2_20_xx

批量重命名目录的解决方案

我来帮你搞定这个批量重命名目录的问题!你之前尝试的命令没生效,主要是因为mv没法直接用通配符做批量替换,而rename因为系统版本不同语法差异很大。下面给你几种稳行的方法:

方法1:Perl版rename(适用于Ubuntu/Debian等系统)

大部分Debian系的Linux默认带的是Perl版本的rename,用正则表达式来做替换非常灵活:

rename 's/^1_20_/2_20_/' 1_20_*
  • 解释:s/旧字符串/新字符串/是正则替换语法,^表示匹配字符串开头,这样只会替换目录名最前面的1_20_为2_20_,不会影响名称里其他位置的相同字符。

方法2:util-linux版rename(适用于RHEL/CentOS/Fedora等系统)

如果你的系统是RedHat系,大概率是util-linux版本的rename,语法更简单直接:

rename 1_20_ 2_20_ 1_20_*
  • 解释:第一个参数是要替换的旧前缀,第二个是新前缀,最后是要匹配的所有目标目录。

方法3:通用bash循环(无依赖,所有bash环境都能用)

如果你的系统没有rename命令,用bash循环也能轻松实现:

for dir in 1_20_*; do
  mv "$dir" "${dir/1_20_/2_20_}"
done
  • 解释:循环遍历所有1_20_开头的目录,然后用bash的参数替换${dir/旧/新}把目录名里的1_20_替换成2_20_,最后执行重命名。

小提示

在执行实际重命名前,你可以先测试一下命令是否正确,比如把mv换成echo mv,这样会打印出将要执行的重命名操作,确认没问题再去掉echo:

for dir in 1_20_*; do
  echo mv "$dir" "${dir/1_20_/2_20_}"
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 22:57:28