4

Я использовал

find -iname *prib*

и получить только один результат "./prib09jack.pdf" с

find -iname "*prib*" 

Я получаю гораздо больше результатов, которые я искал, таких как

./Dir1/PRIB09/prib09jackTFF1.pdf

и многое другое, но почему это так важно, что кавычки были вокруг " prib "?

Лучший.

2 ответа2

10

Если при выполнении команды поиска в текущем каталоге есть файл (или файлы), совпадающие с *prib* подстановочный знак в соответствии с именами файлов, прежде чем передать аргументы для поиска, что приведет к выполняется другая команда, чем пользователь ожидает.

Например,

$ ls foo*
foobar

$ find -iname foo*
./foobar

$ find -iname "foo*"
./foobar
./dir/foobz
./dir2/fooblat

Вкратце, кавычки задерживают интерпретацию с использованием подстановочных знаков для выполнения команды find. Недостаток цитат увеличивается сразу.

1

Проблема в том, что ваша оболочка расширяет подстановочные знаки *, прежде чем передать их для поиска. Вы хотите найти, чтобы получить их, поэтому вам нужно избежать их. Кавычки делают это, или вы могли бы сделать

find -iname \*iprib\*

и это будет работать так же. Ключевым моментом является то, что вы хотите, чтобы подстановочные знаки заставляли его находить непонятным что-либо еще по пути (например, вашу оболочку).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .