tcl/tk参考——系统相关glob

.

.

名称

glob - 返回模式匹配的文件名

语法

glob ?switches? pattern ?pattern ...?

描述

 这个命令返回一个匹配pattern变元的文件列表,返回的列表并不排序,如果需要排序就需要调用lsort命令。

如果初始变元使用-开头,就作为标志出现,以下所述是目前支持的标志位:

-directory directory
在给定的文件夹中寻找匹配的文件,允许在文件夹中寻找包含通配风格字符的文件,这个标志位不能和 -path一起使用
-join
剩下的pattern变元被认为是一个路径名的各个部分,将会被组合起来,类似于 file join命令的方式
-nocomplain
允许返回一个空列表而不是错误,如果没有这个标志位当寻找不到与模式匹配的文件时就返回一个错误
-path pathPrefix
寻找以 pathPrefix开头、其它部分匹配给定模式的文件,这种模式允许在pathPrefix中出现glob敏感的匹配字符,不能够和 -directory一起使用。例如,寻找所有包含相同 $path根名字但是不同扩展名的文件,需要使用命令 glob -path [file rootname $path] .*,这个命令中的 $path允许包含 glob敏感的匹配字符
-tails
只返回文件的文件名而不是包含整个路径的文件名,需要和 -directory-path一起使用。 glob -tails -directory $dir *这个命令和 set pwd [pwd]; cd $dir ; glob *; cd $pwd这一系列命令的执行结果是相同的,对于 -path,返回的文件名是包含整个文件名的,所以 glob -tails -path [file rootname ~/foo] .*将返回形如 foo.aux foo.bib foo.tex的文件而不是形如 .aux .bib .tex的文件。
-types typeList

只有列出匹配typeList的文件或文件夹,typeList有两种形式。

 
第一种形式就像Unix搜索命名中的 -type可选项, b块文件, c字符文件, d文件夹, f普通文件, l软链接, p命名管道, s套接字,可以有多个 -type选项一起使用。 glob命令返回至少匹配一种类型的所有的文件。注意,如果指定了 -type l或者链接的目标文件匹配都会返回软链接文件,所以在指定 -types d时一个文件夹的软链接也会返回。

第二种形式指定的类型必须是所有的类型都匹配,rwx作为文件存取属性,readonlyhidden可以是特殊的存取属性。在Macintosh上,MacOS类型和创建者也是支持的。像{macintosh type XXXX}或{macintosh creator XXXX} 将匹配文件类型和创建者。

这两种形式可以混合使用,所以-type {d f r w}将寻找有可读和可写权限的普通文件和文件夹。下面两个命令是等价的:

glob -type d *
glob */
第一种方式不会返回"/"并且是和操作系统无关的。
--
标志位结束符号。在它之后的变元都将被当作是 pattern

pattern变元可以包含任何以下特殊字符:

?
匹配任何一个字符
*
匹配0个或多个任何字符
[chars]
匹配 chars中的任何一个字符,如果 chars包含一个a-b的形式,那么是a-b当中的任何一个字符(包括a和b)
/x
匹配字符x
{a,b,...}
匹配a、b……中的任意一个字符串

在Unix的csh中,以.开头或者包含/的文件名必须正确匹配或者在{}中,除非-type hidden指定了(因为以.开头的文件为隐藏文件)。在其它操作系统中,以.开头的文件没有什么特殊,但是文件名为.或者..时必须明确匹配。所有的/字符必须明确匹配。

如果在pattern中第一个字符为~,就引用主目录,如果~后面为/那么就会使用HOME环境变量。

glob命令与csh不同,第一,它不会排列返回的结果;第二,glob只返回实际存在的文件名。

示例

搜索当前目录下的所有的Tcl文件:

glob *.tcl

在用户主目录中搜索所有的Tcl文件:

glob -directory ~ *.tcl

搜索当前目录下的所有的子目录:

glob -type d *

搜索包含字符串"a","b"和"cde"的文件:

glob -type f *{a,b,cde}*

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值