tcl - 如何使用 tcl 从路径中删除最后一个子目录?
问题描述
c:\root\machine\spec\detail\
z:\test\room\tool\
我想删除最后一个子目录,变成这样:
c:\root\machine\spec\
z:\test\room\
如何使用 TCL 做到这一点?
谢谢
解决方案
file
好吧,如果您不介意正斜杠和非训练斜杠,您可以尝试使用:
% set line "c:\\root\\machine\\spec\\detail\\"
c:\root\machine\spec\detail\
% file dirname $line
c:/root/machine/spec
否则,如果您想保留问题中提到的所有内容,那么我想快速regsub
应该没问题:
% set line "c:\\root\\machine\\spec\\detail\\"
c:\root\machine\spec\detail\
% regsub {[^\\]+\\$} $line ""
c:\root\machine\spec\
或非重新解决方案;拆分和加入:
% set line "c:\\root\\machine\\spec\\detail\\"
c:\root\machine\spec\detail\
% join [lreplace [split $c "\\"] end-1 end-1] "\\"
c:\root\machine\spec\
不同之处在于,file
它将知道您给它的路径何时是可能的最高级别,而其他解决方案则不会(它们返回空字符串):
% set line "c:\\"
c:\
% file dirname $line
c:/
% regsub {[^\\]+\\$} $line ""
% join [lreplace [split $c "\\"] end-1 end-1] "\\"
%
推荐阅读
- angular - 如何在 Ionic/Angular 中预加载指令 + 相应的 HTML?(Mapbox 指令)
- mysql - 在查询生成器中查询不同的行
- javascript - 知道为什么 adonis 迁移命令不起作用吗?
- arrays - 如何仅将文件中的必要行写入bash脚本中的数组?
- html - 使边距不可点击
- react-native - react-navigation :在屏幕之间正确传递状态
- python - 在 Pythons Scikit-Learn lib 中使用分类数据进行异常值预测
- docker - 我可以在 ubuntu 上安装 docker 吗?
- c# - 升级到 inProcess 后,我在双斜杠上得到 404
- oracle - 使用 Oracle 从表中获取最新记录