将电子表格目录设为您的工作目录。在电子表格目录中制作datainfo文件的副本,以便将一个副本命名为myinfo,并将一个副本命名为datadata。接下来,使用通配符列出以“data”开头的所有文件。使用通配符列出所有结束的文件
我的电子表格目录中有两个名为myinfo和datadata的文件。
终端:/ home / **** / Documents / spreadsheets /
好的,如何使用通配符列出所有以数据开头的文件
答案 0 :(得分:1)
您可以将通配符与ls
一起使用,例如:
ls data*
ls /home/****/Documents/spreadsheets/data*
答案 1 :(得分:1)
在bash中,您需要查看以下手册页:
Pathname Expansion / Pattern Matching * Matches any string, including the null string. When the globstar shell option is enabled, and * is used in a pathname expansion context, two adjacent *s used as a single pattern will match all files and zero or more directories and subdirectories. If followed by a /, two adjacent *s will match only directories and subdirectories.
如果要匹配文件名中的零个或多个字符,可以使用 filename globbing 。在您的情况下,'*'
包含在data
末尾的data
可用于匹配目录中以data_first
开头的所有文件(例如datadata
,{{ 1}},但不是mydata
)。例如,使用子目录(tstdir
)提供以下d1-4
:
tstdir
├── d1
│ ├── d1_f1
│ ├── d1_f2
│ └── d1_f3
├── d2
│ ├── d2_f1
│ ├── d2_f2
│ └── d2_f3
├── d3
│ ├── d3_f1
│ ├── d3_f2
│ └── d3_f3
├── d4
│ ├── f1_d4
│ ├── f2_d4
│ └── f3_d4
├── f1
├── f2
├── f3
├── m1
├── m2
└── m3
要匹配以tstdir
开头的f
下的所有文件,您可以使用:
$ ls -1 tstdir/f*
tstdir/f1
tstdir/f2
tstdir/f3
要匹配子目录中以f
开头的所有文件,您需要一种方法来匹配每个子目录,并匹配其中以f
开头的文件。您可以通过itsef路径中的两个相邻*'s
(例如**
)来完成此操作,例如
$ ls -1 tstdir/**/f*
tstdir/d4/f1_d4
tstdir/d4/f2_d4
tstdir/d4/f3_d4
要仅匹配包含f1
的子目录中的文件,您可以执行以下操作:
$ ls -1 tstdir/**/*f1*
tstdir/d1/d1_f1
tstdir/d2/d2_f1
tstdir/d3/d3_f1
tstdir/d4/f1_d4
'*'
的仅与单个字符匹配的计数器部分为'?'
。要匹配任何一组字符,您还可以使用字符类 [...]
,其中括号内指定的任何字符都匹配(或{{1}时不匹配},其中,抑扬符是该类的第一个字符)例如,仅匹配以' 2'结尾的文件。在当前目录中,不包括以[^...]
开头的目录,您可以这样做:
d
或等效地:
$ ls -1 tstdir/[^d]2
tstdir/f2
tstdir/m2
希望这会让你开始进行模式(通配符)匹配。