文件名扩展在bash中无法理解

时间:2015-09-26 21:45:41

标签: bash shell glob

我有以下代码:

#!/bin/sh

LOG="myfile.log"

ls -l "${LOG}_*"

find . -type f -name "${LOG}_*" -exec ls -l {} \;

产生以下输出:

$ ./test.sh

ls: cannot access myfile.log_*: No such file or directory

-rw-r--r--. 1 user user 0 Sep 26 23:03 ./myfile.log_20150926_1928
-rw-r--r--. 1 user user 0 Sep 26 23:03 ./myfile.log_20150926_1926
-rw-r--r--. 1 user user 0 Sep 26 23:03 ./myfile.log_20150926_1930
-rw-r--r--. 1 user user 0 Sep 26 23:03 ./myfile.log_20150926_1927
-rw-r--r--. 1 user user 0 Sep 26 23:03 ./myfile.log_20150926_1929

我不明白为什么"找到"命令工作而不是" ls"

干杯

1 个答案:

答案 0 :(得分:5)

Shell仅在未引用时扩展星号。

Find在-name本身中展开通配符,你通常必须引用它们以防止shell扩展它们。