【问题标题】:Unexpected behaviour when splitting file by byte-size按字节大小拆分文件时出现意外行为
【发布时间】:2016-11-15 09:26:44
【问题描述】:

假设包含多行字母数字字符串的file 按字节大小拆分为小的子文件。子文件将用数字标记。

$ split -d -b 100 file subfile

生成的子文件在子文件 89 之前按预期标记,但随后会更改它们的标记模式。有趣的是,子文件 9899 处的标记模式再次发生了变化!

$ ls
file
subfile00
subfile01
...
subfile89
subfile9000  # sic!
subfile9001
...
subfile9899
subfile990000  # sic!
subfile990001
...

这种模式对我来说似乎很奇怪。有没有办法按字节大小拆分文件file 并接收从 0 到 x 连续标记的子文件,其中 x = 拆分总数?

编辑 1

$ split --version
split (GNU coreutils) 8.25

【问题讨论】:

  • 您是否可以拥有带有前导0 的文件,即file001file002file100
  • @Inian 是的,我会同意的。因此,我会尝试您的建议。

标签: bash split byte naming


【解决方案1】:

GNU split 默认使用-a 选项(2 默认值)控制要添加到文件的后缀长度。您可以根据使用此-a 选项的拆分文件数覆盖最大位数

-a, --suffix-length=N
     use suffixes of length N (default 2)

例如如果您认为,您的拆分文件可能在 1-100 之间变化,您可以运行 split 命令,并以 3 作为后缀长度。

$ split -a 3 -d -b 100 file subfile

【讨论】:

  • 感谢您的回答。如果强制使用前导零,则命名模式可以正常工作。
  • @MichaelGruenstaeudl:很高兴为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2013-07-31
  • 2022-08-05
相关资源
最近更新 更多