在shell脚本中拆分并重命名拆分的文件

我用下面的命令来吐出文件

split -l 100 date.csv date.csv 

文件分割如下

 date.csvaa date.csvab date.csvac date.csvad date.csvae 

我想要重命名文件如下。

 date_1.csv date_2.csv date_3.csv date_4.csv date_5.csv 

请帮忙

有很多方法来解决这个问题。 其他答案提供了一个方法来做到这一点,只是通过传递给split参数 – 但是在Ubuntu 12.04的拆分版本似乎不支持这些答案中使用的参数。

这是一个。 这会拆分文件,并使用split上的默认选项将文件名前缀为x 。 然后按顺序列出文件并根据需要重命名它们。

  split -l 100 date.csv i=1 for x in `ls x* | sort` do mv $x date_$i.csv i=$(($i+1)) done 

这条线是一回事:

 split --numeric-suffixes=1 --additional-suffix=.csv -l100 data.csv data_ 

小测试(来自stdin):

 kent$ split --version|head -1 split (GNU coreutils) 8.22 kent$ l total 0 kent$ seq 10|split --numeric-suffixes=1 --additional-suffix=.csv -l2 - data_ kent$ l total 20K -rw-r--r-- 1 kent kent 4 Mar 14 11:13 data_01.csv -rw-r--r-- 1 kent kent 4 Mar 14 11:13 data_02.csv -rw-r--r-- 1 kent kent 4 Mar 14 11:13 data_03.csv -rw-r--r-- 1 kent kent 4 Mar 14 11:13 data_04.csv -rw-r--r-- 1 kent kent 5 Mar 14 11:13 data_05.csv