3

フォルダ内のすべての一時ファイルを単一のテキストファイルに連結しようとしています。しかし、私はエラーに遭遇し続けます:

 if { [catch { exec cat /tmp/new_temp/* >> /tmp/full_temp.txt } msg] }

エラーメッセージ:

-cat: /tmp/new_temp/*: No such file or directory

tclshで同じことを(catchとexecなしで)試してみると、うまくいきます

4

2 に答える 2

7

なぜそのようなひどいアプローチ?Tcl自体を使用して、これらのファイルを連結します。

set out [open /tmp/full_temp.txt w]
fconfigure $out -translation binary
foreach fname [glob -nocomplain -type f "/tmp/new_temp/*"] {
    set in [open $fname]
    fconfigure $in -translation binary
    fcopy $in $out
    close $in
}
close $out
于 2012-12-21T12:53:45.507 に答える
2

Tclはシェルではないため、globパターンを自動的に拡張しません。試す

if { [catch {exec sh -c {cat /tmp/new_temp/* >> /tmp/full_temp.txt}} msg] }

globTclにファイル名拡張を実行させるには、次のコマンドが必要です。

set code [catch [list exec cat {*}[glob /tmp/new_temp/*] >> /tmp/full_temp.txt] msg]
if {$code != 0} {
    # handle error
}
于 2012-12-21T12:18:32.780 に答える