简单的 find 命令将无法运行

简单的 find 命令将无法运行

我对 Linux 相当陌生,目前我正在尝试运行以下命令,

find ~ -name apt.no

我正在寻找apt.no另一个列为 的目录montrose-files

shell 没有响应,它只是创建一个新行。谁能向我解释一下为什么这甚至没有产生结果?

bbcharlieca@myvm:~$ find ~ -name apt.no
bbcharlieca@myvm:~$ █

在此输入图像描述

答案1

您的命令查找在您的目录及其下的任何目录中 调用的文件find ~ -name apt.no或目录。 (代表您自己的主目录。)apt.no$HOME~

除非montrose-files位于您自己的主目录中,否则不会搜索它,并且不会找到目标文件。例如,如果montrose-files位于另一个路径下,则需要指定该路径:

find /path/to/montrose-files -name 'apt.no' -print

令人困惑的是,如果您之前在主目录中创建了符号链接,montrose-files则也不会搜索该符号链接,因为find默认情况下不遵循符号链接。您可以通过以下两种方式之一解决该问题:

find ~ -follow -name 'apt.no' -print
find ~/montrose-files/ -name 'apt.no' -print

在第一种方法中,我们告诉find符号follow链接。对于某些版本,find这可能是一个糟糕的方法,因为如果符号链接指向循环,您最终可能会多次遍历该结构。

在第二种方法中,我们通过附加尾部斜杠来强制符号链接解析为真实的目录目标。

最后,请注意,在所有情况下,我都引用了我正在搜索的文件名。在您的简单情况下,它不会有任何区别,但是当您开始使用通配符来匹配文件名的未知部分(例如, )时,您应该使用单引号来确保通配符在可以获取apt.*之前不会被 shell 处理。find他们)。养成引用论点的习惯是个好主意。


* 从技术上讲,它会匹配任何项目,但你的主目录中不太可能有管道、套接字或设备节点

相关内容