すいません、うそでした。前出の Cygwin版 ruby の Find でも、
GnuWin32版も、ディレクトリ名の最後のバイトが 0x5c(\) の場合には
正常に動いていませんでした。
("ABCソフト"は正常、"ABCソ" は異常処理)
#てっきり Win32版GNU などでは multi-byte の API 使ってそう、など
#と思い込んでたようで。
MSWIN32版の ruby 1.6.8 ではこの問題は大丈夫のようです。
(また確認不足かもしれないけど)
Vector などにある UNIX-like tools (オリジナル or NT版) でも大丈
夫ですが、find として bash 上から使うには引数のエスケープの仕方
で使いにくい面があるようです。
ということで、find を置き換えるのに都合の良いものが無くなってし
まった様な…
とりあえず。
-- 正常
$ cmd.exe /c dir /b /s 'C:\test\r'
C:\test\r\r0
C:\test\r\r1
C:\test\r\r0\ABCソフト
C:\test\r\r0\ABCソフト\ABC.txt
C:\test\r\r1\ABCソ
C:\test\r\r1\ABCソ\ABC.txt
-- NG
# Cygwin
$ find C:/test/r -print
...
find: C:/test/r/r0: No such file or directory
# ruby 1.6.8 on Cygwin
$ ruby -Ks -rfind -e 'Find.find("C:/test/r") do |n|; print "#{n}\n"; end'
...
C:/test/r/r1/ABCソ/ABCソ
# GnuWin32
$ find C:/test/r -print
...
C:/test/r/r1/ABCソ
find: C:/test/r/r1/ABCソ/ABCソ: No such file or directory
|