![v2-366b68ef10ef63157ada76555785d4f0_1440w.jpg?source=172ae18b](http://img-01.proxy.5ce.com/view/image?&type=2&guid=48fd97d8-e02f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-366b68ef10ef63157ada76555785d4f0_1440w.jpg?source=172ae18b)
上回说到读写操作,读写过程势必要跟文件目录产生联系,所以这一篇整理一下跟文件相关的几个命令,有个pwd命令可以查看当前工作目录是什么,估计大家都知道,我在这篇只整理了file和glob。
一、file
file对文件名和属性进行操作,完整内容请看如下链接:
https://www.tcl.tk/man/tcl/TclCmd/file.htm#M10
基本语法为
file option name ?arg arg ...?
由option来决定具体操作是什么。有很多小分支,整理一些常见的。
- file mkdir NewdirName #在当前工作目录下新建文件夹名为NewdirNam
2. file dirname name #返回name所在的路径,通常就是完整路径去掉最后一部分的内容
例子:
file dirname
注意几点
- 当文件名里有空格,如Program Files,务必要用大括号将整个路径包裹起来,不然会认为有两个字符串而报错。
- 路径中使用斜杠。
- 如果路径中只有一个文件夹了,就返回该文件夹。
3. file exists name#文件名存在返回1
file isdirecotry name #如果是个路径,返回1
file isfile name #如果是个文件,返回1
4. file extension name #返回扩展名
返回整个名字里最后一个圆点后的扩展名,圆点也一同返回。如果没有找到圆点,那就返回空字符。
file rootname name
返回name中除了最后一个圆点后内容的所有字符,即不包括扩展名的文件名。
file extension
5. file tail name
返回name中最后一部分文件或文件夹名,即不包括路径名的文件名。
file tail
6. file split name
file join name ?name ...?
这两个就是相对应的:
file split
返回值为路径的每个部分,之间用空格隔开:C:/ {Program Files} 7-Zip Lang hu.txt
file join C:
返回值为C:/Program Files/7-Zip/Lang/hu.txt,将各部分组成一个可用的完整路径格式。
我通常会用在读写文件时候使用这一部分命令,比如说给新建的文件名加特定的前缀后缀之类的。
二、glob
glob ?switches? ?pattern ...?
功能为返回符合pattern条件的文件名,排序随机,要是需要排序,请使用lsort命令对列表进行操作。
同样,它包括几个switches,可搭配使用。(题外话:国庆假期买了switch,开心到飞起!)
-nocomplain 使用这个选项,无符合条件的结果时可以返回空列表,不会报错;如果没有这个选项,上述情况出现时就会报错了。
-directory directory 使用这个选项,将在指定的directory 里寻找;没有指定这个目录,就是在当前工作目录下找。
glob
至于pattern,其实除了*还有很多其他情况,像问号?、中括号[]、反斜杠,但我目前星号够用,不展开讲其他的,以后等我捋明白了正则表达式再详细介绍吧。
十一月份也要加油啊!