如何删除文件名的这些部分?

时间:2017-07-07 14:50:47

标签: linux bash shell

我有一些文件需要批量重命名。例如:

Jul-0961_S7_R2_001.fastq.gz    
Jul-0967_S22_rep1_R1.fastq.gz  
Jul-0974_S32_R2_001.fastq.gz

我需要删除文件名的 S * 部分,但我不知道使用正确的正则正则表达式。

具体做法是:

Jul-0961_S7_R2_001.fastq.gz --> Jul-0961_R2_001.fastq.gz

比如,重命名's / S * //'* .gz就是我要找的东西。

那里有一个可以告诉我路由的正则表达式向导吗?提前谢谢。

2 个答案:

答案 0 :(得分:3)

您应该可以使用以下内容:s/_S[0-9]+_/_/

答案 1 :(得分:2)

如果文件格式相同(即下划线数量相同,则可以使用:

"ls" | awk -F_ '{ system("mv "$0" "$1"_"$3"_"$4) }'

这里我们使用下划线作为分隔符,然后构建一个使用系统函数执行的命令