Split and Rename Split Files

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Split and Rename Split Files
# 1  
Old 03-14-2018
Split and Rename Split Files

Hello,

I need to split a file by number of records and rename each split file with actual filename pre-pended with 3 digit split number.

What I have tried is the below command with 2 digit numeric value

Code:
split -l 3 -d abc.txt F (# Will Produce split Files as F00  F01  F02)

How to produce split files with file name as 001_abc.txt , 002_abc.txt ?

i.e 3 digit split number_InputFileName that was passed.

Thanks

Last edited by RudiC; 03-14-2018 at 05:03 AM..
# 2  
Old 03-14-2018
Try
Code:
for FN in F[0-9][0-9]; do echo mv $FN 0${FN#F}_abc.txt; done

Remove echo if happy with proposed results.
# 3  
Old 03-14-2018
This works for me on my Ubuntu 16.04 (xenial) system:
Code:
split -l3 -a3 --additional-suffix=_abc.txt -d abc.txt ''

Note that I have put prefix to be null and added an additional suffix so that the filenames that are generated have a suffix rather than a prefix.

Andrew
These 2 Users Gave Thanks to apmcd47 For This Post:
# 4  
Old 03-15-2018
I am on AIX 7100-03

I am getting an error on the -d flag

Code:
admin@tst(/script)$ split -l 3 -a 1 -d abc.txt F
split: Not a recognized flag: d
Usage: split [-l Line_Count] [-a Suffix_Length] [File [Prefix]]
   or: split -b Number[k|m] [-a Suffix_Length] [File [Prefix]]

Also a minor change.

I need to Run the split command in a script with numer of lines to split as parameter1 and input file name as parameter2 additionally the script should reside is some other directory other than the current or working directory as I will end up deleting the working/current directory after picking up the splitted files.

The split filenames should have 3 digit prefix and the input file name example : 001_abc.txt, 002_abc.txt e.t.c


Thanks
# 5  
Old 03-15-2018
Quote:
Originally Posted by techedipro
I am on AIX 7100-03

I am getting an error on the -d flag

Code:
admin@tst(/script)$ split -l 3 -a 1 -d abc.txt F
split: Not a recognized flag: d
Usage: split [-l Line_Count] [-a Suffix_Length] [File [Prefix]]
   or: split -b Number[k|m] [-a Suffix_Length] [File [Prefix]]

Yes, sorry. I was using GNU extensions to the split command, which is why I mentioned the OS I tested it on. Had I known you are on AIX I would never have suggested it.
Quote:
Also a minor change.

I need to Run the split command in a script with numer of lines to split as parameter1 and input file name as parameter2 additionally the script should reside is some other directory other than the current or working directory as I will end up deleting the working/current directory after picking up the splitted files.

The split filenames should have 3 digit prefix and the input file name example : 001_abc.txt, 002_abc.txt e.t.c


Thanks
So depending on whether you are writing this script for yourself or multiple users the script should be placed in $HOME/bin or /usr/local/bin and your profile file (the one that is run at login) should ensure that directory is in your path ($PATH for sh, ksh or bash; $path for csh).

You can use $1 and $2 for your parameters but reassigning them gives them meaning.
Code:
lines=$1
fname=$2

Assuming you have the -a suffix_length opton to split:
Code:
split -l${lines} -d -a3 ${fname} F

Then use RudiC's solution (replacing abc.txt with ${fname}.

I'll let you figure the rest out.

Andrew
# 6  
Old 03-15-2018
Quote:
Originally Posted by techedipro
I am on AIX 7100-03

I am getting an error on the -d flag

Code:
admin@tst(/script)$ split -l 3 -a 1 -d abc.txt F
split: Not a recognized flag: d
. . .

. . .
How did your post#1 work, then?

Quote:
Originally Posted by techedipro
. . .
Code:
split -l 3 -d abc.txt F (# Will Produce split Files as F00  F01  F02)

. . .
# 7  
Old 03-15-2018
RudiC & apmcd47,

Initailly I did not tested the command with -d flag . I realized it only after running it on AIX machine that -d is not an option.

-d flag will not work.

Any other work around ?


Thanks for your time and patience on this!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Automate splitting of files , scp files as each split completes and combine files on target server

i use the split command to split a one terabyte backup file into 10 chunks of 100 GB each. The files are split one after the other. While the files is being split, I will like to scp the files one after the other as soon as the previous one completes, from server A to Server B. Then on server B ,... (2 Replies)
Discussion started by: malaika
2 Replies

2. Shell Programming and Scripting

awk : split file and rename and save in path according to content

Hello, I'm using Windows 7 ; sed, awk and gnuwin32 are installed. I have a big text file I need to manipulate. In short, I will have to split it in thousands of short files, then rename and save in a folder which name is based upon filename. Here is a snippet of my big input.txt file (this... (4 Replies)
Discussion started by: sellig
4 Replies

3. Shell Programming and Scripting

Split and rename files

Hello, Need to split files into n number of files and rename the files Example: Input: transaction.txt.1aa transaction.txt.1ab ...... Output: transaction.txt.1 transaction.txt.2 transaction.txt.3 (3 Replies)
Discussion started by: krux_rap
3 Replies

4. UNIX for Dummies Questions & Answers

Split and Rename multiple files

Hi, I have a data file like below messageid|email|timestamp 750452173|123@googlemail.com|2013-05-24 16:14:32 750464921|000@gmail.com|2013-06-13 19:38:01 750385426|001@googlemail.com|2013-01-06 12:06:36 750373470|000@wz.eu|2012-11-30 22:32:07 . . I want to split the files based on the... (4 Replies)
Discussion started by: armsaran
4 Replies

5. Shell Programming and Scripting

awk to split one field and print the last two fields within the split part.

Hello; I have a file consists of 4 columns separated by tab. The problem is the third fields. Some of the them are very long but can be split by the vertical bar "|". Also some of them do not contain the string "UniProt", but I could ignore it at this moment, and sort the file afterwards. Here is... (5 Replies)
Discussion started by: yifangt
5 Replies

6. UNIX for Dummies Questions & Answers

Split and Rename files using Terminal and bin/bash

I have a file named Me_thread_spell.txt that I want to split into smaller files. I want it to be split in each place there is a ;;;. For example, blah blah blah ;;; blah bhlah hlabl awasnceuir asenduhfoijhacseiodnbfxasd;;; oabwcuhaweoir;;; This full file would be three separate files... (7 Replies)
Discussion started by: mschpers
7 Replies

7. UNIX for Dummies Questions & Answers

Split then rename

Hi everyone, I am trying to write an if statement that will split a file if it is over 1 million records/lines into files with say 900,000 records and then rename those files without the aaa, aab, aac format that splitting normally does and into a specific naming convention. For instance, if... (2 Replies)
Discussion started by: coach5779
2 Replies

8. Shell Programming and Scripting

awk split and rename files

I have a file test1.html like below: <dctm_topnav_en_US> <html> ..... </html> <dctm_topnav_en_CA> <html> ..... </html> <dctm_topnav_en_FR> <html> ..... </html> I need to use awk to split this into three file names like en_US.html , en_CA.html, en_FR.html each having content between... (4 Replies)
Discussion started by: vijay52
4 Replies

9. Shell Programming and Scripting

split and rename the file

Hi All, I have a requirement .I want to split a file and the split files should have certain names. Currently when i use the split command split -1000 testdata testdata_ Then the output is testdata_aa testdata_bb testdata_cc and so on. But i want the output as testdata1.snd... (3 Replies)
Discussion started by: dnat
3 Replies

10. UNIX for Dummies Questions & Answers

Split a file with no pattern -- Split, Csplit, Awk

I have gone through all the threads in the forum and tested out different things. I am trying to split a 3GB file into multiple files. Some files are even larger than this. For example: split -l 3000000 filename.txt This is very slow and it splits the file with 3 million records in each... (10 Replies)
Discussion started by: madhunk
10 Replies
Login or Register to Ask a Question