【发布时间】:2010-12-05 08:57:51
【问题描述】:
我正在编写一个 shell 脚本,但我被卡住了。要求是:我将收到带有序列号的文件,例如 xyz0001abcd.DAT。我创建了该文件的副本,将序列号保留为 abcd000001gfh.DAT。原始文件名使用四位数(最多 9999),复制的文件名使用六位数(最多 999999)。
当 9999 出现在原始文件中时,我被卡住了。原始文件序列号将环绕,但我希望复制的文件序列号继续。即映射9999->009999后,我会再次收到0001,并将其映射到10000,这样复制的文件就可以继续编号直到999999。
xyz0001abcd.DAT -> abcd000001gfh.DAT
xyz0002abcd.DAT -> abcd000002gfh.DAT
.
.
.
xyz9999abcd.DAT -> abcd009999gfh.DAT # First sequence wraps around.
xyz0001abcd.DAT -> abcd010000gfh.DAT
xyz0002abcd.DAT -> abcd010001gfh.DAT
这如何以 shell 脚本的形式完成?
【问题讨论】:
-
好吧!!这是一个现有的脚本,它作为守护进程运行,持续监视文件并创建文件的副本。但它直接按原样放置序列号。所以我需要更改进程的行为。
-
如果您将 0001 映射到 10001,或者跳过 10000 或在原始文件编号中包含 0000,这会更漂亮。 mouviciel 的回答跳过了 10000,让您使用字符串前缀而不是模运算。
标签: unix shell scripting sed awk