I want to move my older files in another directory with a script like this

find /sourcedirectory -maxdepth 1 -atime +700 -type f -exec mv "{}" /destination/directory/ \;

That works well, but it´s not sorted like before. So I am looking for a way to mirror the folders and sort the files in them like before.

Is that possible?

  • 1
    What do you mean, "it's not sorted"?
    – roaima
    Oct 16 '18 at 6:31
  • currently there are many folders with files in it and if I use that script all my unused files are in one folder. I hope you can understand that my english is not the best
    – NikSch
    Oct 16 '18 at 6:34
  • 3
  • One option might be to have find construct the list of files to be moved, then call on rsync to do the 'heavy lifting' and make sure the directory structure is mirrored correctly.
    – Shadur
    Oct 17 '18 at 6:41
  • @henrik Not a dupe - the answer to the linked question is the stepping-off point to this question. Related, but not a duplicate.
    – Shadur
    Oct 17 '18 at 6:42

If you would like to rsync only the filers younger than 31 days from your source folder, you can combine rsync and find in this way:

rsync -Ravh $(find /path/to/folder/ -type f -mtime -31)  /path/to/destination/folder

I can't test this right now but try

find /sourcedirectory/./ -maxdepth 1 -mtime +700 -print0 |
    rsync -a --files-from=- --from0 --remove-source-files / /destination/directory/

Actually, since you've specified -maxdepth 1 no subdirectories will be considered, so there is no need for anything other than the command you stated in your question:

find /sourcedirectory -maxdepth 1 -atime +700 -type f -exec mv "{}" /destination/directory/ \;

This makes it a duplicate of your earlier question.

  • Is it maybe possible without rsync?
    – NikSch
    Oct 16 '18 at 8:00

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.