Skip to content

Instantly share code, notes, and snippets.

@tatzyr
Last active August 29, 2015 14:25
Show Gist options
  • Select an option

  • Save tatzyr/724edb3c4dfe3da782d4 to your computer and use it in GitHub Desktop.

Select an option

Save tatzyr/724edb3c4dfe3da782d4 to your computer and use it in GitHub Desktop.

Revisions

  1. tatzyr revised this gist Aug 28, 2015. 1 changed file with 17 additions and 5 deletions.
    22 changes: 17 additions & 5 deletions jdxv.rb
    Original file line number Diff line number Diff line change
    @@ -1,13 +1,25 @@
    #!/usr/bin/env ruby

    dirs = Dir["*"]
    files = Dir["*/*"]
    EXCLUDE_DIRECTORY_PATTERN = /\A\d{4}-\d{2}-\d{2}\z/

    abort "ファイル数がおかしい" unless dirs.size == files.size
    files = Dir["*/*"].reject {|filename|
    File.dirname(filename).match(EXCLUDE_DIRECTORY_PATTERN)
    }

    r = rand(10000)
    directories = Dir["*"].reject {|dirname|
    dirname.match(EXCLUDE_DIRECTORY_PATTERN)
    }

    tempdir = "jdxv#{r}"
    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|
  2. tatzyr created this gist Jul 22, 2015.
    18 changes: 18 additions & 0 deletions jdxv.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    #!/usr/bin/env ruby

    dirs = Dir["*"]
    files = Dir["*/*"]

    abort "ファイル数がおかしい" unless dirs.size == files.size

    r = rand(10000)

    tempdir = "jdxv#{r}"
    Dir.mkdir(tempdir)

    files.each do |filename|
    basename = File.basename(filename)
    dirname = File.dirname(filename)
    File.rename(filename, "#{tempdir}/#{basename}")
    Dir.rmdir(dirname)
    end