当我ls -l | grep ^d
时,它只列出当前目录中的目录。
我想知道的是^ d中的字符是什么意思?
答案 0 :(得分:12)
插入符^
和美元符号$
是元字符,分别匹配行的开头和结尾处的空字符串.grep仅匹配以“d”开头的行
答案 1 :(得分:4)
为了补充the good answer by 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 -l | grep /$
将与ls -l | grep ^d
完全相同。
答案 2 :(得分:1)
它有两个含义。上面提到的一个“新白痴”指出。另一个同样有用的是在字符类表达式中,它表示否定:grep -E '[^[:digit:]]' accepts any character except a digit. The
^`必须是[]中的第一个字符。