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

时间:2014-03-14 09:57:49

标签: linux shell unix

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

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

请帮助

2 个答案:

答案 0 :(得分:5)

这一行是一次性完成的:

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

答案 1 :(得分:3)

有很多方法可以解决这个问题。其他答案提供了一种方法,只需将参数传递给split - 但是ubuntu 12.04上的split版本似乎不支持这些答案中使用的参数。

这是一个。这将拆分文件并使用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