お客様から、半角カナを全角カナにしておくれと依頼がきていたので、railsのrootから半角カナを含むファイルを抜き出したくてスクリプト書きました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| #!/usr/bin/env ruby
require 'find'
except_ext = %w(.log .yml .jpg .JPG .jpeg .png .pid .ttf .woff .md .json .ico .eot .gif) # 除外するファイル拡張子を設定
except_pattern = %w(.git test .DS_Store migrate hankaku_kana_checker RackMultipart sprockets letter_opener underscore cache) # 除外するパスに含まれる文字列を指定
# チェックする半角カナの配列
han_kana = %w{ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヲ ン ァ ィ ゥ ェ ォ ャ ュ ョ ッ ゙ ゚ 、 。 ー 「 」}
Find.find(File.expand_path('./')) do |path|
next if File.directory?(path)
next if except_ext.include?(File.extname(path)) # 調査しない拡張子
next if path.match(Regexp.new(except_pattern.join("|")))
begin
File.readlines(path).each.with_index(1) do |line, idx|
@idx, @line = idx, line
# CP932のファイルが混在してたのでダメならCP932で変換
include_han_kana = begin
line.match(Regexp.new(han_kana.join("|")))
rescue
line.encode("UTF-8", "CP932").match(Regexp.new(han_kana.join("|")))
end
if include_han_kana
p [idx, path, line].join(": ")
end
end
rescue => ex
p "####################################################################################################"
p [@idx, @line].join(": ")
p [ path, ex.message ].join(":")
p ex.backtrace.first
p "####################################################################################################"
end
end
|
再帰的にディレクトリをくだって、探します。
含めたくないファイル名やディレクトリ名。拡張子を指定できます。
良かったら使ってみてください。