No.2ベストアンサー
- 回答日時:
ディレクトリ(フォルダ)のような木構造をしているもの全体を処理したいけど
どうしていいか見当がつかないということですか?
一言で言うと「再帰的に処理」をします。
たとえばファイルの名前を出力するだけで考えてみます。
・指定されたディレクトリの一覧を取る。これはOKですか?
無事一覧が取れたら、その要素を一つ一つ調べます。そのとき
1. ファイルだったら → その名前を出力します
2. ディレクトリだったら → そのディレクトリに対して
今自分がやったことを適用します。
つまり、
def put_names(path)
files = 指定ディレクトリ(path)のファイル/ディレクトリ一覧
#filesは配列なので
files.each do |f|
fがファイルなら puts f
fがディレクトリなら
put_names( path + f )
end
end
のような感じです。
ファイルに対して何か操作したいのなら、上記でファイル名を出力している
ところを目的の操作をするメソッドを呼ぶなりしてやればよいです。
ところで自分で勉強のためにスクリプトを組むのが目的ではなく
そういう処理のやり方がわかればよいというのなら、
require 'find'
Find.find('c:/user/home/') do |x|
puts x
end
こんだけです(笑)
まあこれだとディレクトリの名前も出しちゃいますけどね。
No.4
- 回答日時:
#3です。
実行結果を書き忘れました。$ ruby sample.rb
"dir1/file1.txt"
"dir1/file2.html"
"dir1/dir2/file3"
"dir1/dir2/dir5/file9.txt"
"dir1/dir2/dir3/file4.html"
"dir1/dir2/dir3/file5.txt"
"dir1/dir2/dir4/file8.html"
"dir1/dir2/dir4/file6.html"
"dir1/dir2/dir4/file7.txt"
という結果です。
No.3
- 回答日時:
ディレクトリdir1以下を再帰的に検索して、存在するファイルの名前を表示するサンプルです。
ファイルへの書き込みは分かってらっしゃるようなので省略して簡単にしました。ちなみにdir1以下は次のようになっているとします。$ find dir1
dir1
dir1/file1.txt
dir1/dir2
dir1/dir2/dir5
dir1/dir2/dir5/file9.txt
dir1/dir2/dir3
dir1/dir2/dir3/file4.html
dir1/dir2/dir3/file5.txt
dir1/dir2/dir4
dir1/dir2/dir4/file8.html
dir1/dir2/dir4/file6.html
dir1/dir2/dir4/file7.txt
dir1/dir2/file3
dir1/file2.html
# ----ここからサンプルスクリプト-------------------------------
# globの引数が検索パターン。**/の部分が重要
Dir.glob("dir1/**/*").each{|file|
next if test(?d, file) # ディレクトリだったら次のループ
p file
}
# ----サンプルスクリプト終わり---------------------------------
ファイルの拡張子を指定するなら"dir1/**/*.txt"みたいにすればいいです。
不明な点があれば補足で質問してください。
No.1
- 回答日時:
findを使って、shell scriptを作ります。
man findでfindの詳細を勉強してください。
Ruby以外にも、色々な局面で使用できます。
もうちょっと具体的に、実行予定のruby codeをかけば、サンプルコードを提供してくれる人がいるかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- ソフトウェア フォルダ内の全サブフォルダ内のファイルパスをサブフォルダ毎に行を分けてリスト化したい 1 2022/11/13 10:27
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- グループウェア 一太郎がイントラで開けません。対処方法を知りたいです。 3 2023/04/04 13:30
- ドライブ・ストレージ windows10。切り取りと貼り付けは書き込み動作になりますか 3 2022/06/08 17:04
- システム vba シートの追加について 2 2023/05/17 15:58
- その他(プログラミング・Web制作) 置換ソフトで指定したファイルの1行目に入力できるものを探しています 7 2022/11/24 10:34
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
emlファイルのデーターのpost送...
-
エクセルVBAで素数だけを出力す...
-
VBAでCSVファイルを途中行まで...
-
CSVが可変長の場合の検索方法
-
【C++/CLI】ファイルオープンに...
-
log2の「正確な」計算方法
-
MATLABのm-fileについて
-
perlでCSVをソートする方法につ...
-
C言語の問題について
-
[perl] perlで書き込み中に、PC...
-
ボタン操作による指定ドキュメ...
-
htmlから、ファイル、もしくはC...
-
VBAで巨大なファイルの途中から...
-
MAC OSXのTerminalにperlの出力...
-
ファイルの3行目までを出力したい
-
エラーチェック、ファイルに特...
-
perl system関数 引数 フォルダ
-
perlを使ってファイル分割
-
openした後、closeしないでプロ...
-
htaccessで特定のディレクトリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルでrenameができませ...
-
readdir()で得られるファイル・...
-
ディレクトリ名を取得したい
-
パスから最後のディレクトリだ...
-
Windowsで複数のファイルを同じ...
-
FindFirstFileとFindNextFileで...
-
C言語でファイル名を取得
-
エラー 'dir.h' : No such fi...
-
Perlで フォルダ内の全て...
-
vba dir の相対パス
-
一定時間が経過したフォルダの削除
-
テキストファイルの結合
-
chdirがうまくできない
-
LinuxのC言語で、ファイル名の...
-
ディレクトリの判別
-
複数のCSVファイルを一つのCSV...
-
空白を含むディレクトリにある...
-
Perl 特定のフォルダ以外削除
-
正規表現で、特定のファイル名...
-
dos変数の%~dp0は powershellで...
おすすめ情報