[#43271] rails がこけます — "Hideo Konami" <konami@...>

小波です。

15 messages 2007/03/18
[#43273] Re: rails がこけます — 山崎雄介 <y-yamasaki@...> 2007/03/19

山崎です。

[#43274] rubyスクリプト内で、unixコマンドを実行 — 上間 健 <mugenkai15@...> 2007/03/19

こんにちは、上間です。

[#43286] モジュールのinclude先の名前 — Sato Hiroshi <hirocy.f01@...>

hirocyです.

23 messages 2007/03/22
[#43290] system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

お世話になっております。佐藤です。

[#43291] Re: system(wget url) について — Yukiharu Yabuki <yabuki@...> 2007/03/22

こんにちは

[#43293] Re: system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

矢吹さん有難うございます。佐藤です。

[#43294] Re: system(wget url) について — Yukihiro Matsumoto <matz@...> 2007/03/22

まつもと ゆきひろです

[#43295] Re: system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

まつもとゆきひろさん有難うございます。佐藤です。

[ruby-list:43283] Re: rubyスクリプト内で、unixコマ

From: 上間 健 <mugenkai15@...>
Date: 2007-03-19 11:39:56 UTC
List: ruby-list #43283
ありがとうございます
       上間です。

おっしゃる通り
> どうも \r\n という並びを \n にしたいのじゃないかなあという感じ
改行コード CRLF → LF へ変換するつもりです。

>>> system "cat " + path + ' | tr "\r\n" "\n" > ' + path + "2"
において、改行コードは、 CRLF → LFLF になってしまいます。ね!
> tr -d '\r'
を使ってみます。

木村さまの参考スクリプト実行できました。(感謝感謝!!)

木村さまのご指摘の tr -d '\r'  を参考に、スクリプト完成しました。
----------------------------------------- 
crlf2lf.rb-------------------------------------------------begin
#!/usr/local/bin/ruby

require "find"
require "fileutils"

# 引数の(処理するディレクトリの)絶対パス
src_path = File.expand_path(ARGV[0])
# 絶対パスを"/" で分割した配列
src_path_list = src_path.split("/")
# 絶対パスを"/" で分割した数
src_path_size = src_path_list.size
# ベースとなる作成保存場所のパス
base_path = src_path_list[0..-2].join("/") + "/tmp/"

Find.find(src_path) {|path|
   dst_path = base_path + path.split("/")[src_path_size-1..-1].join("/")
   if FileTest.directory?(path)
     FileUtils.mkdir_p( dst_path)
   else
     unless path =~ /jpg$/ or path =~ /png$/ or path =~ /gif$/
       system "cat " + path + ' | tr -d "\r" > ' + dst_path
       system "chmod 777 " + dst_path
     else
       FileUtils.cp(path, dst_path, :preserve=>true)
     end
   end
}

----------------------------------------- 
crlf2lf.rb-------------------------------------------------end




On 2007/03/19, at 19:08, KIMURA Koichi wrote:

> 木村です。
>
> 既に解決したところに余計なことかもしれませんが
>
> On Mon, 19 Mar 2007 14:53:33 +0900
> 上間 健 <mugenkai15@otc.ne.jp> wrote:
>
>>> system "cat " + path + ' | tr "\r\n" "\n" > ' + path + "2"
>> で問題解決できそうです。
>
> これ、tr でなにをやろうとしているのでしょうか?
> tr にこのパラメータを渡した場合
>
>   \r → \n に置き換える
>   \n → \n に置き換える(実質そのまま)
>
> となって、(LF区切りとして)改行が二重になってしまいますけど
> いいんですか?
>
> どうも \r\n という並びを \n にしたいのじゃないかなあという感じ
> を受けるのですけど、勘違いだったらごめんなさい。
>
> もし \r を削除したいということなら
>   tr -d '\r'
> でいいと思います。
>
> で再帰的に処理する方法についてですけど、こういう方法はどうでしょう?
>
> require 'find'
>
> def do_replace(x)
>   dir =  File.dirname(x)
>   src =  File.basename(x)
>   dest = src + '2'
>
>   #system "cd #{dir} ; cat #{src} | tr -d '\\r' > #{dest}"
>   puts "cd #{dir} ; cat #{src} | tr -d '\\r' > #{dest}" # デバッグ用
> end
>
> target = ARGV.shift || '/path/to/dir/'
>
> Find.find(target) do |x|
>   do_replace x
> end
>
> 上記のスクリプトでは system 経由で trを呼び出してますけど、もちろん
> Ruby自体にやらせてもまったく問題はないです。
>
> スクリプトを起動するときに、処理対象のディレクトリの名前を与えれば
> よいです(上の例ではデフォルトのディレクトリを設定していますが)。
>
> -- 
> 木村浩一
>
>


In This Thread