Skip to content

Instantly share code, notes, and snippets.

@tatzyr
Last active August 29, 2015 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tatzyr/724edb3c4dfe3da782d4 to your computer and use it in GitHub Desktop.
Save tatzyr/724edb3c4dfe3da782d4 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
EXCLUDE_DIRECTORY_PATTERN = /\A\d{4}-\d{2}-\d{2}\z/
files = Dir["*/*"].reject {|filename|
File.dirname(filename).match(EXCLUDE_DIRECTORY_PATTERN)
}
directories = Dir["*"].reject {|dirname|
dirname.match(EXCLUDE_DIRECTORY_PATTERN)
}
abort "ファイル数がおかしい" unless directories.size == files.size
abort "ファイルじゃないやつが混ざってる" unless files.all? {|filename| File.file?(filename) }
abort "ディレクトリじゃないやつが混ざってる" unless directories.all? {|dirname| File.directory?(dirname) }
birthdates = files.map {|filename|
File.birthtime(filename).strftime("%F")
}
tempdir = birthdates.uniq.sort_by{|birthdate|
birthdates.count(birthdate)
}.last
Dir.mkdir(tempdir)
files.each do |filename|
basename = File.basename(filename)
dirname = File.dirname(filename)
File.rename(filename, "#{tempdir}/#{basename}")
Dir.rmdir(dirname)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment