【问题标题】:Find unix command gives "Not a directory" error message查找 unix 命令给出“不是目录”错误消息
【发布时间】:2020-02-22 09:43:04
【问题描述】:

要在我的计算机上找到具有给定字符串的文件,我使用 Unix bash shell 在根目录中执行以下命令:

bash$ 须藤找到 . -name 要搜索的文件名

然后我会得到一个文件列表以及以下内容:

查找:./dev/fd/3:不是目录 查找:./dev/fd/4:不是目录

这很令人费解,因为还有 ./dev/fd/5 没有出现在列表中,对于所有三个,当我这样做时:

bash$ cd ./dev/fd bash$ 猫 3

(或 4 个或 5 个)

我明白了:

错误的文件描述符

Bash 给出了相同的信息:

重击$ cd 3

这是目录的内容:

bash$ 密码 /dev/fd bash$ ls -l 共 0 crw--w---- 1 兄弟 16, 5 Oct 26 02:54 0 crw--w---- 1 兄弟 16, 5 Oct 26 02:54 1 crw--w---- 1 兄弟 16, 5 Oct 26 02:54 2 dr--r--r-- 1 根轮 0 Oct 21 09:15 3 dr--r--r-- 1 根轮 0 Oct 21 09:15 4 dr--r--r-- 1 根轮 0 Oct 21 09:15 5

我想知道为什么会出现这种行为,为什么我没有看到文件 ./dev/fd/5 的类似消息,以及这是否表明我没有搜索整个目录结构。如果这表明存在某种损坏的文件,有没有办法不列出它?

【问题讨论】:

  • /dev 目录只包含代表连接到 Mac 的硬件(和软件)设备的伪文件。将-prunefind 一起使用,或者使用sudo find ... 2> /dev/null 丢弃错误
  • 或者只搜索更有可能的地方find /Users /etc /usr /Applications -name ...

标签: macos unix find runtime-error


【解决方案1】:

为了解决问题的最后一部分,正如Marc 的评论(谢谢!)所建议的那样,添加2> /dev/null 可以消除错误消息:

bash$ sudo find . -name file-name-to-be-searched 2> /dev/null

但是,对于文件描述符/dev/fd/5 没有错误消息的原因及其对find 执行的可能影响,这让我们有些摸不着头脑。

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2016-07-08
    • 2012-09-05
    • 2015-05-21
    • 2011-07-27
    • 1970-01-01
    相关资源
    最近更新 更多