在我的目录中有文件:
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
我做错了什么,我的推理错误在哪里?
感谢您的回答。
答案 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*"