0

我想通过 tcl 编程复制文件,这些文件是链接的。这是代码:

if { [file type $sfile] == "link" } {
        set fget [file readlink $sfile ]
         }        
      file copy -force $fget $dir

如果 $sfile 是一个链接,它就可以工作。如果链接的源文件也是链接,这不起作用。

如何递归跟踪符号链接?

4

2 回答 2

2

递归的。

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
于 2013-05-09T19:37:46.343 回答
0

你好我以前用过这个。因为给我们的输入是链接的链接,所以我已经使用该过程来查找真实文件。如果这对您有帮助,请告诉我。

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 这样的循环链接。

于 2013-05-16T11:36:06.630 回答