unix列表文件,名称为句点

时间:2013-07-22 10:57:34

标签: unix ls

我有4个文件:命名约定如下:

hello.account.sub1.001  
hello.account.sub2.001  
hello.account.sub3.001  
hello.account.sub4.001 

如果我使用ls -l hello.account*001搜索文件,则不存在任何问题。

但是,使用ls -l hello.account.*.001

时存在问题

系统抱怨No such file or directory

我假设系统认为hello.account。*。001是单个文件。

这让我感兴趣所以我问:如果将完整停止指定为搜索条件,如何搜索文件?

非常感谢

1 个答案:

答案 0 :(得分:1)

在实际执行命令之前,

Filename globbing shell 完成(例如ls)。以下作品:

$ ksh --version
  version         sh (AT&T Research) 93t+ 2010-06-21

$ ls -l hello.account.*.001
-rw-r--r-- 1 andreas users 0 Jul 22 03:59 hello.account.sub1.001
-rw-r--r-- 1 andreas users 0 Jul 22 03:59 hello.account.sub2.001
-rw-r--r-- 1 andreas users 0 Jul 22 03:59 hello.account.sub3.001
-rw-r--r-- 1 andreas users 0 Jul 22 03:59 hello.account.sub4.001

而以下情况不是:

$ ls -l "hello.account.*.001"
ls: hello.account.*.001: No such file or directory

原因是在第一种情况下,shell在执行ls之前扩展文件名模式 - ls然后会看到四个不同的文件名作为参数传递。

在第二种情况下,由于文件名模式使用双引号进行转义,ls会传递模式本身(ls不会进一步扩展 - 它会查找名称为{的文件{1}})