linux之如何将数字连续的文件名更改为相同的前缀但不同的后缀名

hnrainll 阅读:11 2024-06-03 14:00:57 评论:0

假设我有 4000 个文件:

output1 
output2 
output3 
output4 
output5 
output6 
output7 
output8  
..... 
output3999 
output4000 

如何更改每两个具有相同前缀但不同后缀的数字连续文件?在示例中,我希望将文件名更改为:

output1        -> Type0001_A.abc 
output2        -> Type0001_B.abc 
output3        -> Type0002_A.abc 
output4        -> Type0002_B.abc 
output5        -> Type0003_A.abc 
output6        -> Type0003_B.abc 
output7        -> Type0004_A.abc 
output8        -> Type0004_B.abc 
.....             ..... 
output3999     -> Type2000_A.abc 
output4000     -> Type2000_B.abc 

我做了一个简单的循环,可以解决前缀,但不知道如何解决后缀数字和字母。

for i in `find . -name "output*"` 
do 
l=`echo $i |sed 's/output/Type/'` 
'$i > $l` 
done 

有什么建议吗?高度赞赏有关“循环”的更多在线引用。谢谢。

请您参考如下方法:

你可以写:

for suffix in 000{1..9} 00{10..99} 0{100..999} {1000..2000} ; do 
    mv "output$((10#$suffix * 2 - 1))" "Type${suffix}_A.abc" 
    mv "output$((10#$suffix * 2))" "Type${suffix}_B.abc" 
done 

注意事项:

  • 这里不需要双引号,但是没有它们,Stack Overflow 语法高亮会变得非常困惑。 (特别是,它认为 base-10-arithmetic-constant 中的 # 开始了注释。)嘿,无论如何,将参数扩展包在双引号中总是一种好习惯。<
  • 如果您愿意,可以使用外部程序 seq 稍微简化第一行,并编写 $(seq -w 1 2000) 而不是 000{1..9} 00{10..99} 0{100..999} {1000..2000}。就此而言,如果您有 Bash 4.x,则只需编写 {0001..2000}


标签:linux
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号