我有以下代码:
#!/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
我不明白为什么“find”命令有效,而“ls”命令无效
干杯
最佳答案
Shell 仅在未加引号时展开星号。
Find 在 -name
本身中扩展通配符,并且您通常必须引用它们以防止 shell 扩展它们。
关于bash - bash 中无法理解文件名扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32802338/