Во-первых, аргументом -iname
является оболочка шаблон. Вы можете прочитать больше
о шаблонах в Bash
руководство. То
Суть в том, что для того, чтобы найти
действительно найти файл,
имя файла должно соответствовать указанному шаблону. Чтобы сделать нечувствительным к регистру
строка книга1
соответствует книга1.gnumeric
вам нужно либо добавить *
, чтобы
выглядит следующим образом:
find / -iname 'book1*'
или укажите полное имя:
find / -iname 'Book1.gnumeric'
Во-вторых, -iname
заставит find
игнорировать регистр имени файла, поэтому, если вы
укажите -inname book1
, он также может найти Book1
, bOok1
и т. д. Если
вы уверены, что файл, который вы ищете, называется Book1.gnumeric
тогда используйте не -iname
, а -name
, это будет быстрее:
find / -name 'Book1.gnumeric'
В-третьих, помните о цитировании шаблона, как сказано в other ответ.
И последнее - вы уверены, что хотите найти файл
везде в вашей системе? Возможно, файл, который вы
на самом деле находится в вашем каталоге $HOME
, если вы работали над
или скачал откуда-то. Опять же, это может быть намного быстрее.
РЕДАКТИРОВАТЬ:
Я заметил, что вы отредактировали свой вопрос. Если вы действительно не знаете полного имени файла, написания заглавных букв и местоположения, вы должны использовать что-то вроде этого:
find / -iname 'book1*'
Я также предлагаю поставить 2>/dev/null
в конце строки, чтобы скрыть
все *разрешение отклонено*
и другие ошибки, которые будут присутствовать, если вы вызовете find
как пользователь без полномочий root:
find / -iname 'book1*' 2>/dev/null
И если вы уверены, что ищете один файл, и в вашей системе есть только один файл, который соответствует
критерии, по которым вы можете указать find
для выхода после нахождения первого подходящего файла:
find / -iname 'book1*' -print -quit 2>/dev/null