move or copy a file if that file exists?

Viewed 22531

I am trying to run a command

mv /var/www/my_folder/reports.html /tmp/

it is running properly. But I want to put a condition like if that file exists then only run the command. Is there anything like that?

I can put a shell file instead. for shell a tried below thing

if [ -e /var/www/my_folder/reports.html ]
  then
  mv /var/www/my_folder/reports.html /tmp/
fi

But I need a command. Can some one help me with this?

4 Answers

Moving the file /var/www/my_folder/reports.html only if it exists and regular file:

[ -f "/var/www/my_folder/reports.html" ] && mv "/var/www/my_folder/reports.html" /tmp/
  • -f - returns true value if file exists and regular file

if exist file and then move or echo messages through standard error output

test -e /var/www/my_folder/reports.html && mv /var/www/my_folder/reports.html /tmp/ || echo "not existing the file" >&2

You can do it simply in a shell script

#!/bin/bash

# Check for the file
ls /var/www/my_folder/ | grep reports.html > /dev/null

# check output of the previous command
if [ $? -eq 0 ]
then
    # echo -e "Found file"
    mv /var/www/my_folder/reports.html /tmp/
else
    # echo -e "File is not in there"
fi

Hope it helps

Maybe your use case is "Create if not exist, then copy always". then: touch myfile && cp myfile mydest/

Related