[mew-win32 4402] Re: 拡張子

Eisaku YAMAGUCHI eisaku at example.com
2006年 4月 29日 (土) 16:06:33 JST


山口%逃避活動中 です.

From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [mew-win32 4400] Re: 拡張子
Date: Fri, 28 Apr 2006 10:23:31 +0900 (JST)
> 
> > find.exe の出力(-printf で生成)を,Windows Command Interpreter (cmd.exe)
> > に喰わせているということだと思います.
> ああ、-exec がないんですね。

普段は Cygwin などを使っているので,例示された UnxUtils.zip の
find.exe を試してみました.
find.exe 自体に -exec はありました.-exec の動作も確認しました.
単に -exec の記述を使っていない例示のようです.

理由は... よくわかりません.;-)

折角 UnxUtils を拾ってきましたので,-exec を使った場合について示します.

cmd.exe から呼び出す場合は

  find.exe . -type f -regex .*[0-9]+ -exec mv {} {}.mew ;

UnxUtils の sh(zsh) 上から呼び出す場合は

  find.exe . -type f -regex .*[0-9]+ -exec mv {} {}.mew \;

となります.


それから,前回書き忘れた重要な事項です.
Windows NT 系では,cmd.exe 以外に command.com も持っているのですが,そ
ちらを呼ぶと実行後にコマンドプロンプトがフリーズし,CPU を 100% 喰い尽
くす状態になりますので注意が必要だと思います.
(Windows XP SP2 + HotFix で確認)

Windows 95/98/98SE/Me では,UnxUtils の動作を確認できていません.
UnxUtils は Microsoft C-runtime(msvcrt.dll) にのみ依存しているという事
ですので,これらでも動くと思いますが,その点に関して確認と注意とが必要
かと思います.
現在の Meadow 2.10/3.00-dev 等は,Windows 9x でも動くと Web ではアナウ
ンスされていますので.(念のため...)

> > Windows も find.exe を持っているので,find.exe の実行にあたっては注意
> > が必要です.

追記ですが,-printf などは GNU find でないといけないとか, version に
も依存した話だったと思いますので,その点も明示した方が良いかもしれませ
ん.

また,訂正があります.

|   ・入手した find.exe を current directory に置いて実行する
      入手した find.exe 及び mv.exe を current directory に置いて実行する
|   ・full path で記述する
      find.exe 及び mv.exe を full path で記述する
|   ・PATH を適宜設定する

です.
Windows は move.exe を持っていますので,move.exe も使えますが,
今回の例示では UnxUtils の mv.exe を使っていましたので.

> はい。ところで、テストはどうするんですか?
> 以下で、OK ですか?
> 
> find.exe . -type f -regex .*[0-9]+ -printf "echo %p %f.mew\n" | cmd

command.com の時代から echo on でバッチファイルを実行していた状況と
同じ関係にあるのですが,呼び出された cmd.exe に引き渡される -printf の
出力と,echo の実行結果とが二重に表示されてしまいます.

-exec を使うのとはちょっと状況が異なりますので,"| cmd" を抜いた方が
良いと思います.

find.exe . -type f -regex .*[0-9]+ -printf "mv %p %f.mew\n"

でどうでしょうか.

# 当初
# % find.exe . -type f -regex .*[0-9]+ -printf "@echo off\necho mv %p %f.mew\n" | cmd
# と,他の例示同様 "mv" も入れた方がと脊髄反射的にコメントしそうになり
# ましたが,確認してみて正解でした.;-)

-exec を使うのであれば,

find.exe . -type f -regex .*[0-9]+ -exec echo mv {} {}.mew ;

で如何でしょうか.

例示については,好みの問題がありますので,どのタイプを選択するかは
お任せします.

-- EY



Mew-win32 メーリングリストの案内