0

私はtcl(expect)を学んでいますが、興味深い問題に遭遇しました。拡張子が .status の一連のファイルを移動/名前変更するコマンドが必要です。私はこれらを試しました:

spawn /bin/mv *.status some_dir
exec /bin/mv *.status some_dir

もちろん、それはうまくいきませんでした。私は少しグーグルでグロブについて何かを見つけましたが、それは私が望むようには機能していないようです. 私が行った場合:

exec /bin/mv [glob *.status] somedir

mvは、「1.status 2.status 3.status ... など」と不平を言います。は有効なファイルではありません。ファイルのリスト全体が個別に処理されるのではなく、単一の文字列に連結されているかのようです。

グーグル経由でより多くの情報を見つけようとすると、多くの壊れた古いリンクにたどり着くので、この問題を解決することに加えて、tcl/expect の基本と一般的な落とし穴に関する優れたオンライン リソースを教えていただけないでしょうか。

更新: /bin で標準の tcl および標準ツールを使用するソリューションのみが受け入れられます。

4

5 に答える 5

2
proc move_to_dir {filenames dirname} {
    foreach filename $filenames {
        file rename $filename [file join $dirname [file tail $filename]]
    }
}
# Example:
move_to_dir [glob -nocomplain *.status] ~/foo/bar/
于 2009-02-17T17:42:58.700 に答える
0

複雑な「検索」コマンドを使用してデータを削除する可能性がある場合の安全機能として、コマンドの前に「エコー」を付けてファイルにキャプチャします。
次に、「source」を使用して実行する前に、ファイルにリストされているコマンドを確認できます。

これは、時折発生するエッジ ケース ファイルを手動で処理する方法でもあります。

于 2009-02-17T18:52:02.853 に答える