我想通过 tcl 编程复制文件,这些文件是链接的。这是代码:
if { [file type $sfile] == "link" } {
set fget [file readlink $sfile ]
}
file copy -force $fget $dir
如果 $sfile 是一个链接,它就可以工作。如果链接的源文件也是链接,这不起作用。
如何递归跟踪符号链接?
递归的。
while {[file type $sfile] eq "link"} {
set newfile [file readlink $sfile]
if {[string index $newfile 0] ne "/"} {
set newfile [file dirname $sfile]/$newfile
}
set sfile $newfile
}
file copy -force $sfile $dir
你好我以前用过这个。因为给我们的输入是链接的链接,所以我已经使用该过程来查找真实文件。如果这对您有帮助,请告诉我。
proc get_real_link {linkfile} {
if {[file type $linkfile] eq "link"} {
set tempfile [file readlink $linkfile]
}
if {[file type $tempfile] eq "link" } {
get_real_link $tempfile
} else {
return $tempfile
}
}
set realFile [get_real_link "new1.txt"]
#puts "$realFile"
file copy -force $realFile $dir
假设:new1.txt 是初始链接文件。没有像 A->B B->C C->A 这样的循环链接。