Hot For Coding
Linux中ls命令的一个细节

前两天做公司一个项目,需要在一个目录里ls获取所有txt文件列表,这原本是很简单的事情。不久之后,目录里多了一些其它文件,需要使用*号匹配符,结果发现ls获取文件列表使用通配符与不适用通配符是有点小区别的。

不使用通配符

[root@lee ~]# ls -1 /data0/demo/
a.txt
b.txt
c.txt
d.log
e.log
f.php
g.txt
h.log
i.txt

使用通配符

[root@lee ~]# ls -1 /data0/demo/*.txt
/data0/demo/a.txt
/data0/demo/b.txt
/data0/demo/c.txt
/data0/demo/g.txt
/data0/demo/i.txt

我们发现:

  • 不使用通配符直接打印出文件名
  • 使用通配符直接打印文件全路径

如果直接ls 文件名,同样也会给出全路径

[root@lee ~]# ls -1 /data0/demo/a.txt
/data0/demo/a.txt

在目录下使用通配符,就不会给出全路径

[root@lee ~]# cd /data0/demo/
[root@lee demo]# pwd
/data0/demo
[root@lee demo]# ls -1 *.txt
a.txt
b.txt
c.txt
g.txt
i.txt

如果有写这方面项目的童鞋们,注意下ls的返回结果有可能是返回全路径,也有可能是只返回文件名。

TITLE: Linux中ls命令的一个细节

LINK: https://www.qttc.net/185_linux_ls.html

NOTE: 转载内容请注明出处