ターミナルのコマンド操作と Dir メソッドの違い
Dir のメソッド名を見たときに、ほぼコマンド操作じゃんと思ったのですが、
人間が操作するのはコマンド、プログラムが操作するのは Dirという違いがあるそうです。
RubySirverの勉強をしていると、よくこの中からDirメソッドはどれでしょうとか聞かれ、その選択肢にFileメソッドを混ぜてくるという技を使われます。
私はこのDirメソッドとFileメソッドの見分け方が苦手なので頭に入るようにまとめてみました!
実務で Dir を使う場面は、人間が手でやる操作を Ruby に自動でやらせたいとき!
使い方の例
① 大量のファイルを自動処理したいとき
例:1000枚の画像を一括リネーム
Dir.entries(".").each do |file|
next unless file.end_with?(".png")
File.rename(file, "new_#{file}")
end
コマンドで手作業は無理
Ruby なら一瞬
② バッチ処理・定期実行で使う
毎日 0 時にログフォルダを整理する、みたいなやつ。
Dir.chdir("/var/logs/app")
Dir.entries(".").each do |file|
File.delete(file) if File.mtime(file) < Time.now - 7*24*60*60
end
人間が毎日やるのは無理...
Ruby が自動でやる!
Dir クラスの主なメソッド
-
Dir.pwd
カレントディレクトリ(今いるフォルダ)のフルパスを返す -
Dir.chdir
カレントディレクトリを変更する -
Dir.entries
ディレクトリ内のファイル一覧を配列で返す
entriesは日本語で項目!コマンドだとlsのやつ! -
Dir.glob
パターンにマッチするファイル一覧を返す -
Dir.mkdir
ディレクトリを作成する -
Dir.rmdir
ディレクトリを削除する -
Dir.chmod
フォルダの権限 を変更する -
Dir.chown
所有者を変更する
覚え方
① 「状態を聞く系」は File
File.directory?
File.exist?
File.file?
→ ? がつく “質問系” は File に多い
→ テストで ? がついた瞬間 Dir から除外!
② 「操作する系」は Dir
Dir.pwd(場所を知る)
Dir.chdir(移動する)
Dir.mkdir(作る)
Dir.rmdir(消す)
Dir.chmod(権限変える)
Dir.chown(所有者変える)
→ 動作・操作は Dir
③ 迷ったらこう覚える!
File は「これは何?」と聞く係
Dir は「動かす・作る・消す」係