linux之如何将数字连续的文件名更改为相同的前缀但不同的后缀名
hnrainll
阅读:21
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}
。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。