【问题标题】:Rename all directories after matching匹配后重命名所有目录
【发布时间】:2020-06-30 18:21:20
【问题描述】:

我正在寻找一种方法来重命名所有这些目录:

1_20_10 
1_20_20 
1_20_30 
1_20_40 

到:

2_20_10 
2_20_20 
2_20_30 
2_20_40

我试过这个命令:

mv /1_20*/ /2_20*/ 

和重命名命令但不起作用。

【问题讨论】:

  • 使用 zsh 中的 zmv 轻松实现:zmv "1_(*)" "2_$1"
  • 为什么不使用for 循环?

标签: linux shell rename


【解决方案1】:

您可以使用sed 执行替换并使用for 循环进行迭代。

for i in 1_*; do 
   mv $i $(sed -En 's/^1_(.*)/2_\1/p' <<< $i); 
done

【讨论】:

  • 为什么不mv "$i" "2_${i#*_}"
  • 也是一种解决方案。我分享了我第一眼就记得的那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 2014-05-16
  • 2015-02-28
  • 2014-11-08
相关资源
最近更新 更多