重命名拆分创建的文件

-2 linux shell-script

我有来自split调用的输出文件

shivi11aa
shivi11ab
Run Code Online (Sandbox Code Playgroud)

(等等。)

我如何将这些现有文件重命名为

output_1
output_2
Run Code Online (Sandbox Code Playgroud)

(等等。)

如果我有 1000 个文件,最后一个应该是output_1000.

Kus*_*nda 5

n=0
for filename in shivi11*; do
    n=$(( n + 1 ))
    mv -i "$filename" "output_$n"
done
Run Code Online (Sandbox Code Playgroud)

... 哪里shivi11*是一个模式,它必须匹配您要重命名的所有文件(没有别的)。

备份您的数据并进行测试。


回答原始问题(编辑之前):

如果您split所说的“拆分”是指实用程序,那么您可以像这样调用实用程序来获得所需的内容(假设是 GNUsplit并且您希望将文件拆分file为 20 KB 位):

split -b 20k -a 1 --numeric-suffixes=1 file output_
Run Code Online (Sandbox Code Playgroud)

这将创建output_1output_2等等。

请注意,由于我们使用 将后缀长度限制为单个字符-a 1,因此无法拆分为 9 个以上的文件。使用 eg-a 2将创建名为等的文件output_01output_02直到并包括output_99,但不会创建output_100.

--numeric-suffixes=1选项是一个split特定于 GNU 的选项,它选择从给定数字开始的数字后缀(而不是像 using-d那样从 0 开始)。通常,split创建带有字母后缀的文件。

  • @Shivani 取消您的 CapsLock 键并更新您的问题。另请注意,我们是志愿者,这不是代码编写服务。 (4认同)
  • @Shivani 无需大喊大叫。冷静地让你的问题明确无误。如果您不使用 `split` 实用程序,则不要提及它(您现在使用“_split_ 的输出”来执行此操作)。而是告诉我们您拥有什么和想要什么,有人可能有足够的兴趣来回答。 (2认同)