Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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?

share|improve this question
add comment

1 Answer

up vote 5 down vote accepted

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" \;
share|improve this answer
    
Thanks a lot....Finally working.... –  K.K Patel Dec 20 '12 at 13:19
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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