如何按文件名和部分路径搜索文件?

92 linux search command-line find

通常我有一个文件名,它是部分路径,例如“content/docs/file.xml”。

有没有一种简单的方法来搜索该文件,而无需手动将其名称分成几部分以分别提供目录名和文件名?

如果find以这种方式工作会很棒,所以我可以运行find content/docs/file.xml,但不幸的是它没有。

Bob*_*Bob 105

传入*通配符以指示匹配任何内容。您还需要转义*s,例如:

find . -path \*content/docs/file.xml
Run Code Online (Sandbox Code Playgroud)

或将模式括在引号中,例如:

find . -path "*content/docs/file.xml"
Run Code Online (Sandbox Code Playgroud)

正如手册页所描述的那样:

$ 查找。-name *.c -print

find:路径必须在表达式之前

发生这种情况是因为 *.c 已被 shell 扩展,导致 find 实际上接收到这样的命令行:

找 。-name bigram.c code.c frcode.c locate.c -print

该命令当然不起作用。您应该将模式括在引号中还是逃避这种方式,而不是这样做?卡片:

$ 查找。-name \*.c -print


tec*_*rus 12

find 也有-path(或等效但不太便携-wholename)选项find $top_dir -wholename *string*

find /usr -path *in/abiw*

>/usr/bin/abiword
Run Code Online (Sandbox Code Playgroud)