Created
May 16, 2015 01:29
-
-
Save christiangenco/ea3e52cbf96036704861 to your computer and use it in GitHub Desktop.
automatically delete old files in your Downloads folder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/ruby | |
# invoke on a regular schedule (like once a day) with: | |
# /path/to/trashold.rb ~/Downloads | |
# to automatically trash files older than 1.5 days. | |
require 'fileutils' | |
include FileUtils | |
THRESHOLD = 1.5 * (60 * 60 * 24) | |
# system("say trashing old downloaded files") | |
ARGV.each{|dir| | |
dir = File.expand_path(dir) | |
if File.directory?(dir) | |
Dir.glob(File.join(dir, "*")).select{|f| | |
Time.now - File.ctime(f) > THRESHOLD | |
}.each{|f| | |
trash_directory = File.expand_path(File.join("~/.Trash/", File.dirname(f))) | |
FileUtils::mkdir_p trash_directory | |
mv f, File.join(trash_directory, File.basename(f)) | |
} | |
else | |
STDERR.puts "#{dir} is not a directory" | |
end | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@dfinninger: ooo, that's really elegant. I need to remember to use
xargs
more. There's a few things that one-liner is missing, though: trashing instead of deleting (which could be added to your script, I think, withmv
instead ofrm
), and keeping the position of the files that were deleted (ie: if my script deletes a file in my Downloads folder, it will go intoTrash/cgenco/Downloads/file.doc
). These are important for me so I have a final check of what's getting deleted before it's actually gone forever.@aryamccarthy: sorry; I was trying to imply that. Though you could certainly just run the script manually to get a better feel for how it's working :p