我尝试使用TCL将所有类似的csv文件合并在一起
exec /bin/cat checked_*.csv > check_all.csv
但结果显示:
/ bin / cat:checked _ *。csv:没有此类文件或目录
执行时
“ exec / bin / cat check _ *。csv> check_all.csv” (文件“ test.tcl”第80行)
答案 0 :(得分:1)
exec
命令不会像shell那样扩展文件名,因此cat
仅接收字符串checked_*.csv
。我的猜测是
exec /bin/cat {*}[glob checked_*.csv] > check_all.csv
会更好(尽管我在Windows上)。由于扩展,需要Tcl 8.5或更高版本。
我会推荐
package require fileutil
::fileutil::writeFile check_all.csv [::fileutil::cat {*}[glob -nocomplain checked_*.csv]]
顺便
答案 1 :(得分:1)
嗯,也许是纯Tcl解决方案?
Sub FilterTest1()
dim c as variant
with workSheets("Criteria")
c = .cells(.rows.count, "A").end(xlup).value
.Range("A:B").AutoFilter field:=1, Criteria1:=c
End With
End Sub
编辑:多亏了格伦·杰克曼,set files [glob checked_*.csv]
set fout [open "check_all.csv" w]
foreach file $files {
set fin [open $file r]
fcopy $fin $fout
close $fin
}
close $fout
换成了puts $fout [read $fin]
。
答案 2 :(得分:0)
您需要具有*.csv
完整路径的exec,例如
exec /bin/cat /home/s/pathtofile/checked_*.csv > check_all.csv
答案 3 :(得分:0)
快速而又肮脏的解决方案:启动一个外壳程序来为您处理漫游和重定向:
exec /bin/sh -c {/bin/cat checked_*.csv > check_all.csv}