I am new to bash script and want to create bash script that moves some days old files between source and destination as per days defined in script.


echo "Enter Your Source Directory"
read soure

echo "Enter Your Destination Directory"
read destination 

echo "Enter Days"
read days

find $soure -mtime -$days -exec mv {} $destination \;
echo "Files which were $days Days old moved from $soure to $destination"

my script runs without error, but I am not getting required output. When I run to move 30 day old files of /home/ketan/maxi folder to /home/ketan/google, it moves whole maxi folder to google rather than files.

I need to be able to move files that meet the age criteria as per the script. What is wrong with this script?

1 Answer 1


The find expression will match the parent directory as well. You need to tell it to only operate on regular files if you want it to move the files only. Additionally, you should quote your expansions.

find "$soure" -type f -mtime "-$days" -exec mv {} "$destination" \;

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .