使用引号查找命令导致“没有这样的文件”

时间:2017-12-17 09:43:21

标签: linux bash shell command-line terminal

在我的目录中有文件:

file1.txt  fix.log  fixRRRRRR.log  fixXXXX.log  output.txt

为了理解find命令,我尝试了很多其他东西,我想用2个通配符。目标是查找以f开头的文件,其扩展名以l开头。

$ find . f*.l*

./file1.txt
./fix.log
./fixRRRRRR.log
./output.txt
./fixXXXX.log
fix.log
fixRRRRRR.log
fixXXXX.log

我在论坛中读到了使用带有结果的find . "f*.l*"引号的答案:`

./file1.txt
./fix.log
./fixRRRRRR.log
./output.txt
./fixXXXX.log

结果为find: ‘f*.l*’: No such file or directory

我做错了什么,我的推理错误在哪里?

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

找不到那样的工作。通常,查找呼叫表格如下:

find [entry1] [entry2] ... [expressions ...]

如果条目是find开始搜索文件的起点。

在您的情况下,您实际上并未提供任何表达方式。

在第一个命令(没有引号)中,shell将通配符扩展为匹配文件列表(在当前目录中),然后将列表作为参数传递给find。因此find . f*.l*基本上等同于find . fix.log fixRRRRRR.log fixXXXX.log。因此,find将所有这些参数视为要搜索的目录/文件(不是要搜索的模式),并列出.下的所有文件,(所有内容),然后列出fix.log下的所有文件(它&# 39;不是目录,因此只是文件本身),然后是fixRRRRRR.log下的所有文件,最后是fixXXXX.log下的所有文件。

在第二个(带引号)中,它搜索当前目录(。)下的所有文件,并对文件字面上称为" f * .l *"。

进行相同的尝试。

实际上你可能正在寻找" -name"表达式,可以这样使用:

find . -name "f*.l*"