Copy files in respective directories


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Copy files in respective directories
# 8  
Old 03-21-2017
Thanks Ravi once again, moreover i am taking the latest file if you check in my script. I take the latest file and copy that into respective path. Sorry i missed one more thing to say. If my file name is fish then i need to create a directory
Code:
cur_date=$(date +%Y%m%d)
mkdir $DIR/fis/$cur_date
cp /path/to/fish /dir/fis/$cur_date/
if not found then copy from previous directory
cp /dir/fis/$cur_date-1/ /dir/fis/$cur_date/
$(ls -t1 $path|  grep -i $file | head -n 1)

# 9  
Old 03-21-2017
Hello Master_Mind,

Could you please try this and let me know if this helps you.
Code:
cat copy_files.ksh
DIR="/tmp"
awk -vdir="$DIR"  'function copy(path){
                                        system("if [[ -f " $0 " ]]; then if [[ ! -d  " path " ]]; then mkdir "path"; echo " path " directory created successfully now.; fi; cp " $0  FS path  ";if [[ $? == 0 ]]; then echo " $0 " file copied successfully to " path ".; else echo Please check there is an issue while copying file.; fi; else echo " $0 " file not present.; fi")
                                      }
                                      {
                                        if($0 == "apple"){
                                                                copy(dir"/ap")
                                                         };
                                        if($0 == "fish") {
                                                                copy(dir"/fis")
                                                         };
                                        if($0 == "mango"){
                                                                copy(dir"/man")
                                                         }
                                      }
                  '    Input_file

EDIT: Adding a non-one liner form of system's command above for better understanding.
Code:
cat copy_files.ksh
DIR="/tmp"
awk -vdir="$DIR"  'function copy(path){
                                        system("if [[ -f " $0 " ]]; \
                                        then if [[ ! -d  " path " ]]; \
                                        then mkdir "path"; echo " path " \
                                        directory created successfully now.; \
                                        fi; cp " $0  FS path  ";if [[ $? == 0 ]]; \
                                        then echo " $0 " file copied successfully to " \
                                        path ".; else echo Please check there is an issue while copying file.; \
                                        fi; else echo " $0 " file not present.; fi")
                                      }
                                      {
                                        if($0 == "apple"){
                                                                copy(dir"/ap")
                                                         };
                                        if($0 == "fish") {
                                                                copy(dir"/fis")
                                                         };
                                        if($0 == "mango"){
                                                                copy(dir"/man")
                                                         }
                                      }
                  '    Input_file

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 10  
Old 03-21-2017
Thanks Ravi,

But creating the system date directory is only for file name which has fish not for other files. Only for fish file i would require to mkdir with cur_date and copy the file if the file is not found then copy file from previous month cur_date.

for eg

mkdir dir/fish/2016-03-01/
cp from input directory to dir/fish/2016-03-01/

if file not found in input directory then copy from
dir/fish/2016-02-01/ to dir/fish/2016-03-01/
# 11  
Old 03-21-2017
Hello Master_Mind,

Not clear to me, could you please put all your requirements all together and give more useful samples to make it clear to us.

Thanks,
R. Singh

Last edited by RavinderSingh13; 03-21-2017 at 10:05 AM..
This User Gave Thanks to RavinderSingh13 For This Post:
# 12  
Old 03-21-2017
Sure Ravi, let me explain you clear sorry for confusing.

config file
Code:
apple
mango
fish

input file directory which is comman directory
Code:
dir/input/
apple.txt
mango.txt
mango_1.txt
fish.txt

copying method
Code:
cp dir/input/apple.txt output/ap/
cp dir/input/mango_1.txt output/man/
cp dir/input/fish.txt output/fish/2017-03-21/

above mango_1 is being copied since it is the latest file placed in input directory
for fish.txt - since its present in input directory i need to first make directory with current date say 2017-03-21 and copy the file
if suppose fish.txt is not present in input direc then copy from previous month directory considering 2017-02 YYYY-MM because date can be anything
Code:
cp output/fish/2017-02*/  output/fish/2017-03-21/

all the files should be taken latest file from input directory thats why i would have added this command
Code:
ls -t1 $path|  grep -i $file | head -n 1

# 13  
Old 03-21-2017
Hello Master_Mind,

Could you please try following and let me know if this helps you.
Code:
cat copy_files.ksh
DIR="/tmp"
INPUT=/edmdidx03/admin/a553454
DATE=$(date +%Y-%m-%d)
DATE_PRE=$(date +%Y-%m-%d -d"1 month ago")
awk -vdate=$DATE -vdate_pre=$DATE_PRE -vdir="$DIR"  -vexcept="fis" -vinput=$INPUT 'function copy(path){
                                        system("set -x;if [[ -f " input"/"$0 " ]] ; then  if [[ ! -d " path " ]] ; then  mkdir " path " echo " path " got created successfully. ; fi ; if [[ " $0 " == " except " ]] ; then  mkdir " path"/"date " ; cp " $0 FS path"/"date " ; else  cp " $0 FS path  " ; fi ; else  if [[ ! -d " dir"/"except"/"date_pre" ]] ; then  echo seems directory named " dir"/"except"/"date_pre "not existing. ; fi ; echo test; if [[ " $0 " == " except " ]] ; then  echo chumma ;cp " dir"/"except"/"date_pre"/*" FS dir"/"except"/"date" ; fi ; fi")
                                      }
                                      {
                                        if($0 == "apple"){
                                                                copy(dir"/ap")
                                                         };
                                        if($0 == "fis") {
                                                                copy(dir"/fis")
                                                         };
                                        if($0 == "mango"){
                                                                copy(dir"/man")
                                                         }
                                      }
                  '     Input_file

EDIT: Adding better readable form of above code too now.
Code:
cat copy_files.ksh
DIR="/tmp"
INPUT=/edmdidx03/admin/a553454
DATE=$(date +%Y-%m-%d)
DATE_PRE=$(date +%Y-%m-%d -d"1 month ago")
awk -vdate=$DATE -vdate_pre=$DATE_PRE -vdir="$DIR"  -vexcept="fis" -vinput=$INPUT 'function copy(path){
                                        system("set -x;if [[ -f " input"/"$0 " ]] ; \
                                        then  if [[ ! -d " path " ]] ; then  mkdir " \
                                        path " echo " path " got created successfully. ; \
                                        fi ; if [[ " $0 " == " except " ]] ; then  mkdir " \
                                        path"/"date " ; cp " $0 FS path"/"date " ; else  cp " \
                                        $0 FS path  " ; fi ; else  if [[ ! -d " dir"/"except"/"date_pre" ]] ; \
                                        then  echo seems directory named " dir"/"except"/"date_pre "not existing. ; \
                                        fi ; echo test; if [[ " $0 " == " except " ]] ; then  echo chumma ;cp " \
                                        dir"/"except"/"date_pre"/*" FS dir"/"except"/"date" ; fi ; fi")
                                      }
                                      {
                                        if($0 == "apple"){
                                                                copy(dir"/ap")
                                                         };
                                        if($0 == "fis") {
                                                                copy(dir"/fis")
                                                         };
                                        if($0 == "mango"){
                                                                copy(dir"/man")
                                                         }
                                      }
                  '    Input_file

PS: Some few points in above code, like variable named except is for the files which you want to check if they are not present then copy them from previous month's folder. Though I tested it but you need to check it completely for all the things.
I added code set -x into it for tracing purposes, you could remove it if you want to remove.

Thanks,
R. Singh

Last edited by RavinderSingh13; 03-21-2017 at 01:17 PM..
This User Gave Thanks to RavinderSingh13 For This Post:
# 14  
Old 03-21-2017
Thanks Ravi for your help, One thing i wanted to know can you let me know why you care creating the directory for other files apart from fish, because i already have source directory created only for fish file i need to create directory with date folder

Code:
dir/fis/date

Code:
then  if [[ ! -d " path " ]] ; then  mkdir " \
                                        path " echo " path " got created successfully. ; \

And also I think I can your previous code that file successfully copied /not copied / file not present in input directory message in same function

Last edited by Master_Mind; 03-21-2017 at 01:35 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Recursive search for files and copy to new directories

So I have extremely limited experience with shell scripting and I was hoping someone could point out a few commands I need to use in order to pull this off with a shell script like BASH or whatnot (this is on OS X). I need to search out for filenames with account numbers in the name itself... (3 Replies)
Discussion started by: flyawaymike
3 Replies

2. Shell Programming and Scripting

create more than 100 directories and copy files into them

Hi, I have several files containing experiment measurements per hour (hour_1.txt has measurements for first hour, etc..etc..). I have 720 of these files (i.e. up to hour_720.txt) and i want to create 720 directories and in every one of them i want to copy its associative file (e.g.... (4 Replies)
Discussion started by: amarn
4 Replies

3. Shell Programming and Scripting

Copy files by automatically creating directories

I am in a situation where I have some hundreds of thousands of files in a directory (name of directory: big_directory). Now, working on this directory is extremely slow. I now plan to do this: Copy 1000 files in each of the directories by creating the directories automatically. All files have... (1 Reply)
Discussion started by: shoaibjameel123
1 Replies

4. Shell Programming and Scripting

Find all .htaccess files and make a backup copy in respective directories

Hey guys, I need to know how to locate all .htaccess files on the server and make a backup of them in the folder they reside before I run a script to modify all of them. So basically taking dir1/.htaccess and copying it as dir1/.htaccess_bk dir2/.htaccess copying as dir2/.htaccess_bk... (5 Replies)
Discussion started by: boxx
5 Replies

5. Shell Programming and Scripting

Copy respective path next to last column with awk

Hi to all, I have the short print out sample of the DOS command "dir S/" as showed below. Directory of C:\Program Files\Winamp\Skins\Bento\window 02/12/2010 11:35 p.m. <DIR> . 02/12/2010 11:35 p.m. <DIR> .. 11/12/2009 10:31 a.m. 13,556... (3 Replies)
Discussion started by: cgkmal
3 Replies

6. UNIX for Dummies Questions & Answers

how can i copy those files into other directories have the same name

how can i copy those files into other directories have the same name but different in the end i have files in directory called test: 10_10_asdadfsdfad.txt 10_10_11_asdawqefwkjasd.txt 10_10_11_12_asdafjjhoqwd.txt i want to put them in exist directory thart i have on my system i have... (1 Reply)
Discussion started by: t17
1 Replies

7. UNIX for Dummies Questions & Answers

Compare two directories and copy differing files

Hello there, I'm a total noob to shell scripting. :) What I want to do is compare the contents of Folder A and Folder B, and copy any files in Folder A that do not exist in Folder B over to Folder B. I have gotten so far as: diff -rq folderA folderB which returns the names of the files,... (3 Replies)
Discussion started by: raaaaaa
3 Replies

8. UNIX for Dummies Questions & Answers

Copy Directories excluding files

Hi guys, I want to copy folder and sub folders only. I don't want the files. If i use cp -r command it will copy entirely with files. Could any one suggest me. Thanks in advance (1 Reply)
Discussion started by: karthik82
1 Replies

9. UNIX for Dummies Questions & Answers

copy multiple files in different directories

I have a report file that is generated every day by a scheduled process. Each day the file is written to a directory named .../blah_blah/Y07/MM-DD-YY/reportmmddyy.tab I want to copy all of this reports to a separate directory without having to do it one by one. However, if I try cp... (3 Replies)
Discussion started by: ken2834
3 Replies

10. UNIX for Dummies Questions & Answers

How do copy certain files and directories from one hard drive to another?

I have two drives (scsi) mounted on one server and I need to copy certain files and directories from one drive to the other. Any suggestions :confused: (4 Replies)
Discussion started by: shorty
4 Replies
Login or Register to Ask a Question