0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ターミナルのコマンド操作と 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 は「動かす・作る・消す」係

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?