8

当我这样做时ls -l | grep ^d,它只列出当前目录中的目录。

我想知道的是 ^d 中的字符 ^ 是什么意思?

4

3 回答 3

14

插入符号^和美元符号$是元字符,分别匹配行首和行尾的空字符串。grep 仅匹配以“d”开头的行。

于 2013-06-12T07:07:04.287 回答
5

为了补充The New Idiot 的好答案,我想指出这一点:

ls -l | grep ^d

显示当前目录中的所有目录。那是因为在目录信息的开头ls -l添加了一个d

的格式ls -l如下:

-rwxr-xr-x  1 user group    0 Jun 12 12:25 exec_file
-rw-rw-r--  1 user group    0 Jun 12 12:25 normal_file
drwxr-xr-x 16 user group 4096 May 24 12:46 dir
^
|___ see the "d"

为了更清楚,您可以在目录信息的末尾ls -lF包含一个:/

-rwxr-xr-x  1 user group    0 Jun 12 12:25 exec_file*
-rw-rw-r--  1 user group    0 Jun 12 12:25 normal_file
drwxr-xr-x 16 user group 4096 May 24 12:46 dir/

所以ls -lF | grep /$会做同样的事情ls -l | grep ^d

于 2013-06-12T10:32:48.230 回答
1

It has two meanings. One as 'The New Idiot' above pointed out. The other, equally useful, is within character class expression, where it means negation: grep -E '[^[:digit:]]' accepts any character except a digit. The^` must be the first character within [].

于 2013-06-12T10:14:49.113 回答