当我这样做时ls -l | grep ^d
,它只列出当前目录中的目录。
我想知道的是 ^d 中的字符 ^ 是什么意思?
插入符号^
和美元符号$
是元字符,分别匹配行首和行尾的空字符串。grep 仅匹配以“d”开头的行。
为了补充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
。
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 [].