要查找计算机上具有给定字符串的文件,我使用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
的类似消息,并且这是否表明我没有搜索整个目录结构。如果此信号表明存在某种损坏的文件,是否可以不列出该文件?
答案 0 :(得分:0)
要解决问题的最后一部分,如Marc的评论所建议(谢谢!),添加2> /dev/null
可以消除错误消息:
bash$ sudo find . -name file-name-to-be-searched 2> /dev/null
但是,对于文件描述符/dev/fd/5
没有错误消息的原因及其对执行find
的可能影响,我们有些茫然。