为什么不能通过 SSH 使用通配符递归查找工作?

为什么不能通过 SSH 使用通配符递归查找工作?

我通过 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*,所以模式是不是已替换。

相关内容