如何通过tcl复制链接文件

问题描述 投票:0回答:2

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

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

如果$ sfile是链接,则可以使用。如果链接的源文件也是链接,则此方法不起作用。

如何递归地跟踪符号链接?

file tcl trace
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

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

© www.soinside.com 2019 - 2024. All rights reserved.