【发布时间】:2017-10-25 11:18:16
【问题描述】:
我有这些文件:
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons.csv.0
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons.csv.1
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons.csv.2
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons.csv.3
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons.csv.4
我想这样重命名:
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons_1.csv
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons_2.csv
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons_3.csv
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons_4.csv
NIHMS735398-supplement-Supplemental_Table_-_Top_Down_MS_Identificaitons_5.csv
我尝试了以下(以及一些变体)但没有成功:
rename -v 's/(NIHMS.+tons).csv.+/\1_[0-9]\.csv/' *.csv*
和
ls *csv* | sed -E 's/(NIHM.+tons)\.csv.*$/\1_{1..5}.csv/'
和
ls *csv* | cat -n | while read n f; do mv "$f" "$f_$n.csv"; done
我得到的最接近的是使用给我的最后一个:
1.csv 2.csv 3.csv 4.csv 5.csv
我很确定我可以使用 python 做到这一点,但我正在尝试通过命令行/bash,最好使用正则表达式(我正在努力学习更好)。
【问题讨论】:
-
这似乎将数字加一,但接受的答案没有。真正想要的行为是什么?
-
@Benjamin W. 我解释了我想要的问题本身,我什至发布了所需输出的示例。我说的最后一件事是举例说明我得到的不是我想要的。
-
是的,根据问题中所需的输出,编号从 0,1,2,3,4 变为 1,2,3,4,5,但接受的答案直接映射。
标签: regex bash shell command-line rename