我正在使用下面这两个代码。
ls -lap . | grep -v "/$"
ls -lap . | grep -v "/"
在某些情况下,这两者会给我不同的输出。 $ 在这种情况下意味着什么?
答案1
它是一个表示行尾的正则表达式。该命令用于从ls
输出中排除目录,因为它们将以/
.我不确定ls -lap .
输出将包含/
除行尾之外的任何位置的条件,但如果这种情况确实存在,则两个命令的输出将不相同。
请参见以下示例:
$ ls -lap .
total 12
drwxr-xr-x 3 jesse_b jesse_b 4096 Apr 13 10:00 ./
drwxr-xr-x 12 jesse_b jesse_b 4096 Apr 13 09:59 ../
drwxr-xr-x 2 jesse_b jesse_b 4096 Apr 13 10:00 bar/
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 09:59 foo
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 10:00 oof
$ ls -lap . | grep -v "/$"
total 12
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 09:59 foo
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 10:00 oof
$ ls -lap . | grep -v "o$"
total 12
drwxr-xr-x 3 jesse_b jesse_b 4096 Apr 13 10:00 ./
drwxr-xr-x 12 jesse_b jesse_b 4096 Apr 13 09:59 ../
drwxr-xr-x 2 jesse_b jesse_b 4096 Apr 13 10:00 bar/
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 10:00 oof
$ ls -lap . | grep -v "o"
drwxr-xr-x 3 jesse_b jesse_b 4096 Apr 13 10:00 ./
drwxr-xr-x 12 jesse_b jesse_b 4096 Apr 13 09:59 ../
drwxr-xr-x 2 jesse_b jesse_b 4096 Apr 13 10:00 bar/