Is better way copy list of multiple files, rename and gzip


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Is better way copy list of multiple files, rename and gzip
# 8  
Old 02-03-2015
I don't understand what you're trying to do.

Do you mean that you want to use pkzip to create a zip file for each input file using its OLD filename with its filename extension replaced by .zip as the name of the zip file and the contents of that zip file will be the compressed NEW filename?

Do you mean that you want to use pkzip to create a zip file for all input files for a given date using the name of the first OLD filename with its filename extension replaced by .zip as the name of the zip file and the contents of that zip file with be all of the compressed NEW filenames for the given date?

If you're going to the bother of renaming your files, why should the zip file be named to an untranslated OLD name instead of the corresponding NEW name? If you're creating one zip for for all of the files for a given date, why not just use YYYYMMDD.zip (where YYYYMMDD corresponds to the date of the files in that zip file) as the zip file name?
# 9  
Old 02-03-2015
Thanks very much Mr.Don for reply this subject....cause I can't figure what's the best way when use pkzip instead gzip. And out put like below.

Do you mean that you want to use pkzip to create a zip file for each input file using its OLD filename with its filename extension replaced by .zip as the name of the zip file and the contents of that zip file will be the compressed NEW filename? Yes...pkzip one by one and ouput with new name and without extention.txt. Thanks
Code:
/tmp/test: cat controlfile
Original_File_1: AB_P_Cdf_{OLD_DATE}.txt 
Original_File-2: DD_P_DAdf_{OLD_DATE}.txt
Original_File-3: dsf_P_DEMO_{OLD_DATE}.txt
Original_File-4: sdfd_P_Pd_{OLD_DATE}.txt
bla bla until Old_File-100
 
New_File_1: test1_sd_WW_{NEW_DATE}.txt
New_File_2: test2vd_WW_new_{NEW_DATE}.txt
New_File_3: test3cfd_dfP_dff_{NEW_DATE}.txt
New_File_4: test4gdd_WW_P_OdfsDUCT_{NEW_DATE}.txt
bla bla until New_File-100

Code:
 
#!/bin/ksh
TMP_DIR="$1"
CONTROL_FILE="$2"
ORIGINAL_DATE="$3"
TARGET_DATE="$4"
WORK_DIR="$5"
 
#TMP_DIR='/tmp/test'
#WORK_DIR='/staging/test'
 
cd "$TMP_DIR"
/usr/bin/nawk -v TMP_DIR="$1" -v CONTROL_FILE="controlfile" -v ORIGINAL_DATE="$3" -v TARGET_DATE="$4" -v WORK_DIR="$5" '
{       sub(/[{]OLD_DATE[}]/, ORIGINAL_DATE)
}
{       sub(/[{]NEW_DATE[}]/, TARGET_DATE)
}
/^Original_File/ {
        o[++oc] = $2
        next
}
/^New_File/ {
        # Process new file names...
        ++nc    
        printf("cp %s/%s %s\n", WORK_DIR, o[nc], $2)
        #printf("gzip %s\n", $2) 
Something replace with pkzip for each file and output with new name
}' "$WORK_DIR/$CONTROL_FILE" | ksh

Code:
./test.ksh /tmp/test controlfile 20150109 20150230 /staging/test

Code:
 
Example pkzip one by one....
pkzip -add test1_sd_WW_{NEW_DATE}.zip AB_P_Cdf_{OLD_DATE}.txt
pkzip -add test2vd_WW_new_{NEW_DATE}.zip DD_P_DAdf_{OLD_DATE}.txt
pkzip -add test3cfd_dfP_dff_{NEW_DATE}.zip dsf_P_DEMO_{OLD_DATE}.txt
pkzip -add test4gdd_WW_P_OdfsDUCT_{NEW_DATE}.zip sdfd_P_Pd_{OLD_DATE}.txt
bla bla until New_File-100 or 200 files

Output:
Code:
test1_sd_WW_{NEW_DATE}.zip
test2vd_WW_new_{NEW_DATE}.zip
test3cfd_dfP_dff_{NEW_DATE}.zip
test4gdd_WW_P_OdfsDUCT_{NEW_DATE}.zip
bla bla until New_File-100


Last edited by dotran; 02-03-2015 at 12:27 PM..
# 10  
Old 02-03-2015
This works for me localy:

Code:
#!/bin/bash
WORK_DIR="." #"$1"
CONTROL_FILE=controlfile #"$2"
ORIGINAL_DATE=2014.06.13 #"$3"
TARGET_DATE=2015.02.03 #"$4"
declare -i C	# Counter

cd "$WORK_DIR"
C=1

grep Original_File[_-] "$CONTROL_FILE" | \
	while read id entry ; do
		newFile=$(grep New_File[_-]${C} "$CONTROL_FILE"|awk '{print $2}')
		C=$(( $C + 1 ))
		
		# Change to false if there are no STRINGS OLD_DATE or NEW_DATE in the CONTROL_FILE.
		if [ true ]
		then	entry="${entry/\{OLD_DATE\}/$ORIGINAL_DATE}"
			newFile="${newFile/\{NEW_DATE\}/$TARGET_DATE}"
		fi
		
		echo cp "${entry}" "${newFile}"
		echo pkzip -add "${newFile/txt/zip}" "$entry"
		echo
	done

exit 0

Outputs as:
Code:
$ sh dotran-sea

cp AB_P_Cdf_2014.06.13.txt test1_sd_WW_2015.02.03.txt
pkzip -add test1_sd_WW_2015.02.03.zip AB_P_Cdf_2014.06.13.txt

cp DD_P_DAdf_2014.06.13.txt test2vd_WW_new_2015.02.03.txt
pkzip -add test2vd_WW_new_2015.02.03.zip DD_P_DAdf_2014.06.13.txt

cp dsf_P_DEMO_2014.06.13.txt test3cfd_dfP_dff_2015.02.03.txt
pkzip -add test3cfd_dfP_dff_2015.02.03.zip dsf_P_DEMO_2014.06.13.txt

cp sdfd_P_Pd_2014.06.13.txt test4gdd_WW_P_OdfsDUCT_2015.02.03.txt
pkzip -add test4gdd_WW_P_OdfsDUCT_2015.02.03.zip sdfd_P_Pd_2014.06.13.txt

Hope this helps

Last edited by sea; 02-03-2015 at 01:28 PM..
# 11  
Old 02-03-2015
Thanks very much Sea, Don & RudiC. Your code worked really well.....i spend 2 days and can't figure how to accomplish this task. You guy really helpful and make me understanding new way how to write the code. Again....thanks all !!!
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Compress multiple gzip files

Good afternoon friends. I wanted to make a query, how to compress several files and leave them all in 1, for example flat text files: filename_1.csv filename_2.csv filename_3.csv expected result filename_end.gzip = (filename_1.csv filename_2.csv filename_3.csv) please (2 Replies)
Discussion started by: tricampeon81
2 Replies

2. Shell Programming and Scripting

Oop to copy and rename files through SQL Statement in shell Script

#!/bin/sh sqlplus -s "/ as sysdba" << EOF SET HEADING OFF SET FEEDBACK OFF Select pt.user_concurrent_program_name , OUTFILE_NAME FROm apps.fnd_concurrent_programs_tl pt, apps.fnd_concurrent_requests f where pt.concurrent_program_id = f.concurrent_program_id and pt.application_id =... (1 Reply)
Discussion started by: usman_oracle
1 Replies

3. Shell Programming and Scripting

Linux Script to copy and rename files through SQL statement

Hi, I require help to complete below requirement through Linux Script. I have a SQL query which shows two columns as output. One is Report Name and other is report path. Query return multiple rows. below is the output. Report Name Cotton Stock Report (Net Weight)- Customized Output... (3 Replies)
Discussion started by: usman_oracle
3 Replies

4. Shell Programming and Scripting

Help with script to copy/rename files, then delete by date

Hi All, I am new to scripting and am looking for some assistance setting up a script. Basically I need the script to scan a folder for the newest files and make a copy of those files, adding a month to the date stamp. I also need this script to delete the previously copied files to save space.... (4 Replies)
Discussion started by: Lucid13
4 Replies

5. Shell Programming and Scripting

Files rename and copy

hello, I am write a Script and i would listing all Files from Path1 out with DSR*.txt and give a new name an copy to the Path2. I have problems with that to rename. Someone can help me? Sorry, for my english. My english is not gut. I hope you understand my. That is my Script. ... (2 Replies)
Discussion started by: efeijoo
2 Replies

6. Shell Programming and Scripting

Copy files from folder and rename them

hello, I need to build a shell script that receives the folder to copy by parameter and copy all files except thumb.db to another folder and rename them like, file.jpg renamed to file_bb1.jpg. can someone help me Thanks (4 Replies)
Discussion started by: zeker
4 Replies

7. UNIX for Dummies Questions & Answers

script to rename files with current date and copy it.

I have few webservers logs like access.log. which would be growing everyday. what i do everyday is, take the backup of access.log as access.log_(currentdate) and nullify the access.log. So thought of writing a script... but stuck up in middle. My requirement: to take the backup and nullify... (6 Replies)
Discussion started by: logic0
6 Replies

8. UNIX for Dummies Questions & Answers

copy and rename list of files

Hi all, I am a newbie in writng unix..I am using ksh shell..Does anyone know how to copy a list o files from directory A to directory B with differnt names? i.e in Dir A, I have RPT101.555.TXT RPT102.666.TXT and I want to copy those files to dir B with new naming convention.. in Dir B,... (7 Replies)
Discussion started by: kinmak
7 Replies

9. UNIX for Dummies Questions & Answers

gzip, multiple files

Hello Everyone, Here is what I am trying to do. I have four text files, I want to gzip them under unix and mail the zipped file via outlook. I am able to do this easily enough, but using winzip or pkunzip to unzip the file, there is only one file. (In essence, all four files were... (2 Replies)
Discussion started by: smbodnar
2 Replies
Login or Register to Ask a Question