ちょっとしたdirectoryの整理をemacs上で簡単に。
こんな状況のとき
でもrubyの場合。
「ruby -r fileutils -e '..'」とやっているうちに何が何だかわからなくなってしまいます><。
見やすい状態でコードが書きたいです。(具体的にはemacsで)
そこで、
(defun ruby-eval-buffer (&optional print?) "Evaluate the buffer with ruby." (shell-command-on-region (point-min) (point-max) "ruby") (if print? (insert-buffer-substring-as-yank "*Shell Command Output*"))) (add-hook 'ruby-mode-hook (lambda () (define-key ruby-mode-map "\C-c@" (lambda () (interactive) (ruby-eval-buffer))) (define-key ruby-mode-map "\C-c`" (lambda () (interactive) (ruby-eval-buffer t))) ))
を追加しておくと、「C-c@」で現在開いているバッファの内容をrubyに実行させることができます。
(C-c`だと実行結果を現在のバッファに書き込みます。(rcodetool.elを入れてからあまり使わなくなりました))
そんなわけで、例えば"*scratch*"のmodeをruby-modeに変えた後に
以下のようなコードを書いてからC-c@で"~/box/"内のファイルを"~/box/used/"に移動することができます。
emacsなのでコードを書くのが楽です。
p = (ENV["HOME"]+"/box") Dir.chdir(p) t = Dir["*"].reject{ |e| File.directory? e} require 'fileutils' FileUtils.move(t,p+"/used/", :verbose => true, :noop => true) #:noopがtrueになっているので移動はしません。 #(本当に移動させたいときには:noopをなくします。)