我通过 SSH 从 macOS 连接到 CentOS 服务器。当我尝试find
在开头使用通配符时,它似乎只直接搜索当前文件,没有递归。但如果我将通配符放在文件名末尾,它就可以正常工作。我在本地 Mac 上没有遇到这个问题。
# find . -name *.inc
./copra_xml_gen.settings.inc
#
# find . -name auth.inc
./common_v4/auth.inc
./v5_old/common/auth.inc
./common/auth.inc
./v6/common/auth.inc
./v5/common/auth.inc
#
# find . -name auth*
./common_v4/auth.inc
./v5_old/common/auth.inc
./common/auth.inc
./v6/common/auth.inc
./v5/common/auth.inc
答案1
shell 正在执行文件名扩展前调用find
。请参阅https://www.gnu.org/software/bash/manual/bash.html#Shell-Expansions
您想要保护图案不受外壳的影响:
find . -name '*.inc'
或者
find . -name \*.inc
在当前目录中:
- 您有一个匹配的文件
*.inc
并且 shell 会用 find 命令中的实际文件名替换该词。 - 你做不是有一个匹配的文件
auth*
,所以模式是不是已替换。