Linux/mac 中的 find 命令\*.xml和*.xmlin 有什么区别
结果:
find . -name \*.xml and find . -name *.xml是不同的。但为什么?
还有,locate '*.xml'比找到更好吗?最常用的是哪一种?
通过转义星号,您将提供要匹配find的文字字符串*.xml,无论外壳如何,它都可以在内部将其解析为通配符。如果你未能转义或引用星号,它会在被find命令触及之前被 shell 展开。
例如,如果您somefile.xml的目录中只有一个文件,shell 将扩展通配符并将文字字符串传递somefile.xml给您的命令。IE:
sh-4.1$ find . -name *.xml
Run Code Online (Sandbox Code Playgroud)
将完全等同于:
sh-4.1$ find . -name somefile.xml
Run Code Online (Sandbox Code Playgroud)
它只会匹配那个确切的文件名。如果您的目录中有两个文件与*.xml通配符匹配,则在扩展通配符时可能会出现语法错误:
sh-4.1$ find . -name somefile.xml someotherfile.xml
find: paths must precede expression: someotherfile.xml
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Run Code Online (Sandbox Code Playgroud)
至于是否locate更好,这实际上取决于您使用它的目的。虽然locate速度要快得多,但它依赖于预先构建的索引,因此它只与最近的索引更新一样好(通常每天更新一次,但这取决于发行版)。此外,它只返回基于文件名匹配的结果,而find允许大量选项来优化您的搜索。
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |