[英]Find unix command gives “Not a directory” error message
要在我的计算机上找到具有给定字符串的文件,我使用 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
的类似消息,以及这是否表明我没有搜索整个目录结构。 如果这表明存在某种损坏的文件,有没有办法不列出它?
为了解决问题的最后一部分,正如Marc的评论(谢谢)所建议的那样,添加2> /dev/null
可以消除错误消息:
bash$ sudo find. -name file-name-to-be-searched 2> /dev/null
然而,它让我们有点不知所措,为什么文件描述符/dev/fd/5
没有错误消息,以及它对find
执行的可能影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.