2

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.

#!/bin/bash

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?

5

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" \;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.