前两天做公司一个项目,需要在一个目录里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的返回结果有可能是返回全路径,也有可能是只返回文件名。