Чтобы найти на моем компьютере файлы с заданной строкой, я выполняю следующую команду в корневом каталоге, используя оболочку Unix:
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
и может ли это быть показателем того, что я не ищу всю структуру каталогов. Если есть какой-то поврежденный файл, который это сигнализирует, есть ли способ не перечислить его?