在linux-ubuntu

时间:2016-09-08 04:27:23

标签: linux unix terminal

将电子表格目录设为您的工作目录。在电子表格目录中制作datainfo文件的副本,以便将一个副本命名为myinfo,并将一个副本命名为datadata。接下来,使用通配符列出以“data”开头的所有文件。使用通配符列出所有结束的文件

我的电子表格目录中有两个名为myinfo和datadata的文件。

终端:/ home / **** / Documents / spreadsheets /

好的,如何使用通配符列出所有以数据开头的文件

2 个答案:

答案 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

希望这会让你开始进行模式(通配符)匹配。