Shell script which will check the target file and folder exists and copy it


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script which will check the target file and folder exists and copy it
# 1  
Old 11-14-2014
RedHat Shell script which will check the target file and folder exists and copy it

Hi All,

I am a beginner in this and trying to write a shell script in linux which will :

1. Ask for a file name and check if its exists.
2. If file exists only then it will ask for the new target folder, after entering target folder name it will check if it exists.
3. If target folder exists it will copy that file in to it.

I have written the below code and it's working fine if file and folder exists but not working properly when any of them is not exists.


Code:
#!/bin/bash

read -p "Enter file name : " filename
echo "Please wait checking if $filename exists ..."

if [ -f "${filename}" ]

then

        echo "File $filename exist."
        read -p "Enter location to copy $filename : " location

else

        echo "$0: $filename not found."

fi
                if [ -d "${location}" ]

                then

                        echo "Target location found. Initiating file copy to $location."
                        cp -v "$filename" "$location"
                        echo "$filename copied to $location."

                else

                        echo "$0: $location not found."

                fi


Please let me know if i missed something.

Thanks,
Ashish
# 2  
Old 11-15-2014
@Ashish

Moved the if [ -d "${location}" ] inside the first successful if statement, since it is the only place that belongs, otherwise it will execute even when it is established that the file doesn't exist. The only thing I added for you to ponder is the if [ $? -eq 0 ];. Assuming that cp is successful is not truthful to the following echo.

Code:
#!/bin/bash

read -p "Enter file name : " filename
echo "Please wait checking if $filename exists ..."

if [ -f "${filename}" ]
then
    echo "File $filename exist."
    read -p "Enter location to copy $filename : " location
    if [ -d "${location}" ]
    then
        echo "Target location found. Initiating file copy to $location."
        cp -v "$filename" "$location"
        if [ $? -eq 0 ]; then
            echo "$filename copied to $location."
        fi
    else
        echo "$0: $location not found."
    fi
else
    echo "$0: $filename not found."
fi

This User Gave Thanks to Aia For This Post:
# 3  
Old 11-17-2014
Hi Aia, thanks for the help.

Now i am trying to do :

1. Ask for a file name and check if its exists.
2. If file exists only then it will ask for the new target folder, after entering target folder name it will check if it exists, if doesn't exits it will create one with with the $location value.
3. It will copy that file in to it.


I have made below changes in to above script. Its working but i facing minor issue in it:

If i am trying to copy existing file in to non existing folder it's working fine and throwing below message

Code:
/etc/inittab copied to /OOO.

But if i am copying existing file in to existing folder i am not getting above message.


Code:
#!/bin/bash

read -p "Enter file name : " filename
echo "Please wait checking if $filename exists ..."

if [ -f "${filename}" ]
then
    echo "File $filename exist."
    read -p "Enter location to copy $filename : " location

    if [ -d "${location}" ]
    then
        echo "Target location found. Initiating file copy to $location."
        cp -v "$filename" "$location"
    else
        echo "$location not found ! Creating..."
        mkdir -p "$location"
        echo "$location folder created. Copying $filename to $location ..."
        cp -v "$filename" "$location"

        if [ $? -eq 0 ]
        then
                echo "$filename copied to $location."
        else
                echo "ERROR while copying $filename to $location. Please check write permission or disk space and try again !!!"
        fi

     fi

else
    echo "$filename not found."
fi


I will really appreciate if you point out needed changes.

Thanks,
Ashish
# 4  
Old 11-17-2014
You have no echo command after the copy to existing folder.
Add a message and you'll get one Smilie

What if the creation of the folder fails?
So you could move the:
Code:
        if [ $? -eq 0 ]
        then
                echo "$location created"
        else
                echo "ERROR while creating $location. Please check write permission or disk space and try again !!!"
                exit 1
        fi

To just below mkdir -p "$location"

Hope this helps
This User Gave Thanks to sea For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell scripting for moving folder specific files into target directory of that country folder.

I need help to write shell script to copy files from one server to another server. Source Directory UAE(inside i have another folder Misc with files inside UAE folder).I have to copy this to another server UAE folder( Files should be copied to UAE folder and Misc files should be copied in target... (3 Replies)
Discussion started by: naresh2389
3 Replies

2. Shell Programming and Scripting

Check if remote folder exists

Hi, When trying to chk if a folder exists on remote server using the below command (got it from other thread in this forum) "ifvchr@s1.mrix.local '/cygdrive/d/shares/projects\ data\ load/test\ files/$SCPED_FILES$name$code'`]; then echo "Directory exists"; else echo "Directory... (0 Replies)
Discussion started by: funonnet
0 Replies

3. Shell Programming and Scripting

shell script to take input from a text file and perform check on each servers and copy files

HI all, I want to script where all the server names will be in a text file like server1 server2 server3 . and the script should take servernames from a text file and perform copy of files if the files are not present on those servers.after which it should take next servername till the end of... (0 Replies)
Discussion started by: joseph.dmello
0 Replies

4. UNIX for Dummies Questions & Answers

Assistance with shell script to check file type and move to a folder.

Hi, Below is some code that I would like to implement however I am getting these errors: (what I am attempting to do is to check if a zip file has ascii files and if ascii and not binary then move the ascii files to a folder. some of the files are in xml format but are ascii and i will be moving... (0 Replies)
Discussion started by: bwcberb
0 Replies

5. Shell Programming and Scripting

Copy Files to Dir and Check If File Exists

Hi everyone. I am trying to write a bash script that will copy files from one directory to another but I need to be able to check the directory that I'm copying the files to and see if the file already exists. If it does I need to add a number at the end of the copied file. Thanks for your help. (3 Replies)
Discussion started by: snag49ers
3 Replies

6. Shell Programming and Scripting

Shell script to check if any file exists in 4 folders

Hi All, working on AIX 5.3. Requirement is: Shell script in ksh to check if any file exists in 4 folders as below: 1. /FILE/INB/INT1 2. /FILE/INB/INT2 3. /FILE/INB/INT3 4. /FILE/INB/INT4 Thanks a lot for your time! a1_win. (3 Replies)
Discussion started by: a1_win
3 Replies

7. Shell Programming and Scripting

HOW TO CHECK ONLY .C FILES EXISTS OR NOT IN A FOLDER using IF in C shell script?

Hi friends.. I hav a problem.... I dont know how to check .c files exists r not in a folder using IF in C shell script actually i tried like this if(=~ *.c) even though some .c files or there in the current folder..it is not entering int o the if control statement...... (17 Replies)
Discussion started by: p.hemadrireddy
17 Replies

8. Shell Programming and Scripting

check if file exists in a mounted windows shared folder

hi, I posted a thread before on that subject, but with a wrong focus... here's my problem: I want to check if a file exists in a windows shared folder mounted using: sudo mount -t cifs -o username=xxx,password=xxx,uid=xxx,gid=xxx //192.168.0.92/public /media/92_shared I tried if ... (2 Replies)
Discussion started by: jul
2 Replies

9. Shell Programming and Scripting

simple check to see if a folder exists

Hi, I have cobbled together a simple script to create a Windows folder in a bunch of home folders on a mac server using the following code. for i in /Volumes/student_data/studenthomefolders/* do u=`echo $i | cut -d/ -f5` //if //then //echo "Folder already exists for "$u" Skipping" //else... (4 Replies)
Discussion started by: psyman
4 Replies

10. Shell Programming and Scripting

Check Remote Folder Exists

Hi, I want to sftp some files to a remote directory. Before transferring files i want to check whether the required folder exists. If so copy the files to that folder, else create the folder and copy the files. Thanks in adv (1 Reply)
Discussion started by: borncrazy
1 Replies
Login or Register to Ask a Question