在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4465|回复: 8

[原创] 用tcl遍历文件夹搜索文件时为什么相同的文件会出现多次

[复制链接]
发表于 2016-3-13 16:55:26 | 显示全部楼层 |阅读模式
100资产
我用下面的代码遍历文件夹“zhu”,搜索其中所有的.v文件并返回路径,为什么相同的文件会被多次返回。代码:
set dirpath "/home/klin/zhu"
cd $dirpath
pwd
set resultfile "/home/klin/Desktop/test/result.tcl"

if { [catch {set result [open $resultfile w+]} err] } {
   puts $err
   exit
}

proc FindFile { myDir result } {
   if {[catch {cd $myDir} err]} {
      puts $result $err
      return
   }

   foreach myfile [glob -nocomplain *] {
      cd $myDir
      if {[string equal $myfile ""]} {
        return
      }

      if {[file isdirectory $myfile]} {
        set fullfile [file join $myDir $myfile]
        FindFile $fullfile $result
      } else {
      foreach filename [glob -nocomplain *Netlist.v*] {
        set fileresult [file join $myDir $filename]
        set resultlist [format "read_file -format verilog %s" $fileresult]
        puts $result $resultlist
        }
      }
   }
}

FindFile $dirpath $result

close $result

而得到的结果却是:
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/RISC/RTL/RISC_SPM_Netlist.v
read_file -format verilog /home/klin/zhu/RISC/RTL/RISC_SPM_Netlist.v
read_file -format verilog /home/klin/zhu/RISC/RTL/RISC_SPM_Netlist.v
read_file -format verilog /home/klin/zhu/RISC/RTL/RISC_SPM_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v
read_file -format verilog /home/klin/zhu/LFSR_Netlist.v

 楼主| 发表于 2016-3-14 11:08:56 | 显示全部楼层
问题已解决。
发表于 2016-3-26 10:56:43 | 显示全部楼层
是不是可以说一下为啥呢
发表于 2016-4-2 09:02:07 | 显示全部楼层
这是脚本没写好吧。 我写了几个文件夹搜索文件类型,每个文件名都只被列表一次,输出的txt文件列表,列出出所有的文件名及路径。
发表于 2016-4-2 09:04:36 | 显示全部楼层
通过这个方法,可以直接 创建 hdl 工程,达到快速建立工程项目的目的。(手动加文件或者文件夹及子文件夹不是很便捷)
发表于 2016-4-25 14:49:46 | 显示全部楼层
foreach 中套 foreach? 好像不可以这么用吧
发表于 2019-7-28 16:37:28 | 显示全部楼层


B-elial 发表于 2016-3-14 11:08
**** 作者被禁止或删除 内容自动屏蔽 ****


请问是怎么解决循环多次的?
发表于 2020-3-25 11:59:42 | 显示全部楼层
已解决~!
发表于 2020-6-15 17:00:25 | 显示全部楼层
赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 13:15 , Processed in 0.023438 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表