通过删除名称中的前数字或字符的特定部分来重命名所有文件夹

通过删除名称中的前数字或字符的特定部分来重命名所有文件夹

我有一个很长的文件夹列表,如下所示:

001_bat_3513
002_mon_3213
003_bat_3515
scd_btt_3540
s52_bat_4513
xx2_bpt_8523
056_bot_3513
058_bat_1513
.
.

从此列表中:如何通过删除名称中的前三个数字或字符来重命名所有文件夹?所以列表就变成了这样:

bat_3513
mon_3213
bat_3515
btt_3540
bat_4513
bpt_8523
bot_3513
bat_1513
.
.

答案1

假设您的 shell 支持参数扩展:

for f in *_*_*; do mv -i "$f" "${f#*_}"; done
  • 参数扩展模式${f#*_}删除_从左边到第一个的子字符串

或者使用rename( prename):

rename 's/^[^_]*_(.*)/$1/' *_*_*
  • ^[^_]*_从头开始匹配第一个子字符串_(.*)匹配其余的子字符串,它也会被放入第一个匹配组中,用于替换

相关内容