find
使事情变得精彩的重要原因之一
如果我这样做:
find -path *ncf
或这个:
find -path ncf*
我没有得到任何结果,但如果我这样做:
find -path *ncf.js
我得到一个匹配的文件。这是为什么?这是 find 的独特之处,还是更宏大的东西?有人知道写这封信的人的家庭住址吗find
?
答案1
这里有两个问题。
您需要转义
*
,否则它将由 shell 处理(匹配当前目录中的文件,如果有的话):find -path \*ncf.js
或者
find -path '*ncf.js'
您看到的行为来自于通配表达式与文件匹配的事实小路完整的内容,包括扩展。 (用于
-name
匹配文件名,文件名仍包含扩展名。)这不是特定于 的,请在包含文件的目录中find
尝试使用它。ls
请注意,您应该养成指定起始目录的习惯,即使它是.
;并非所有版本都find
使用它作为默认值。
答案2
我会添加,因为其他答案中没有解释这一点。
find -path "*ncf"
find -path "*ncf.js"
上面的内容并不相同(注意:我将 glob 放在引号中,以阻止 shell 扩展它)。原因是:一个以 结束,ncf
另一个以 结束ncf.js
。如果这令人困惑,那么您需要放弃文件扩展名的想法。 Unix 没有它们:点只是一个字符,不会被区别对待(除非它是第一个字符,在这种情况下它是隐藏的:它可能不会出现在目录列表中)。