我有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是单个文件。
这让我感兴趣所以我问:如果将完整停止指定为搜索条件,如何搜索文件?
非常感谢
答案 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}})