Команда Find unix выдает сообщение об ошибке «Не каталог» - PullRequest
0 голосов
/ 26 октября 2019

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

1 Ответ

0 голосов
/ 26 октября 2019

Чтобы ответить на последнюю часть вопроса, как предлагает комментарий Marc (спасибо!), Добавление 2> /dev/null избавляет от сообщений об ошибках:

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

Однако, это оставляет нас в неведении относительно того, почему нет сообщения об ошибке для файлового дескриптора /dev/fd/5 и его возможных последствий при выполнении find.

...