我想通过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-> CC C-> A这样的循环链接。