查找Unix命令会显示“不是目录”错误消息

时间:2019-10-26 06:45:41

标签: macos unix find runtime-error

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

bash$ sudo find . -name file-name-to-be-searched

然后我得到了文件列表以及以下内容:

find: ./dev/fd/3: Not a directory
find: ./dev/fd/4: Not a directory

这很令人困惑,因为当我这样做时,还有./dev/fd/5并没有出现在列表中,并且对于这三个视图:

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

(或4或5)

我得到:

Bad file descriptor

Bash给出以下消息:

bash$ cd 3

这是目录的内容:

bash$ pwd
/dev/fd
bash$ ls -l
total 0
crw--w----  1 bro   tty     16,   5 Oct 26 02:54 0
crw--w----  1 bro   tty     16,   5 Oct 26 02:54 1
crw--w----  1 bro   tty     16,   5 Oct 26 02:54 2
dr--r--r--  1 root  wheel         0 Oct 21 09:15 3
dr--r--r--  1 root  wheel         0 Oct 21 09:15 4
dr--r--r--  1 root  wheel         0 Oct 21 09:15 5

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

1 个答案:

答案 0 :(得分:0)

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

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

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