简体   繁体   中英

Split and rename the splitted files in shell script

i used below command to spit the file

split -l 100 date.csv date.csv

The files are splittes as below

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

I want to rename the files as below.

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

please help

this line does it in one-shot:

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

little test (from 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

There are many ways of approaching this. Other answers provide a way to do it just with arguments passed to split - however the version of split on ubuntu 12.04 don't appear to support the arguments used in those answers.

Here is one. This splits the files and uses the default option on split to prefix the file names with an x . It then lists the files in order and renames them as required.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM