gpt4 book ai didi

bash - 为什么 **find** 找不到任何东西?

转载 作者:行者123 更新时间:2023-11-29 08:45:54 26 4
gpt4 key购买 nike

我正在寻找安装在我的系统上的 shell 脚本文件,但是find 不起作用:

$ find /usr -name *.sh

但我知道那里有大量的脚本。例如:

$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh
/usr/local/lib/tkConfig.sh

为什么查找不起作用?

最佳答案

尝试引用通配符:

$ find /usr -name \*.sh

或:

$ find /usr -name '*.sh'

如果您碰巧在当前工作目录中有一个匹配*.sh 的文件,通配符将在find 发现它之前展开。如果您的工作目录中碰巧有一个名为 tkConfig.sh 的文件,find 命令将扩展为:

$ find /usr -name tkConfig.sh

这只会找到名为 tkConfig.sh 的文件。如果你有多个文件匹配 *.sh,你会从 find 得到一个语法错误:

$ cd /usr/local/lib
$ find /usr -name *.sh
find: bad option tkConfig.sh
find: path-list predicate-list

同样,原因是通配符扩展到两个文件:

$ find /usr -name tclConfig.sh tkConfig.sh

引用通配符可防止其过早展开。

另一种可能性是/usr 或其子目录之一是符号链接(symbolic link)。 find 通常不会跟随链接,因此您可能需要 -follow 选项:

$ find /usr -follow -name '*.sh'

关于bash - 为什么 **find** 找不到任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com