(Ubuntu/Linux) “находит”, что команда дает различные результаты на основе кавычек

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

find -iname *prib*

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

find -iname "*prib*" 

Я получаю намного больше результатов, что я искал такой как

./Dir1/PRIB09/prib09jackTFF1.pdf

и намного больше, но почему имело значение, что кавычки были вокруг "prib"?

С наилучшими пожеланиями.

4
задан 26.08.2010, 19:37

2 ответа

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

Например,

$ ls foo*
foobar

$ find -iname foo*
./foobar

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

Короче говоря, Кавычки задерживают подстановочную интерпретацию для команды находки для выполнения. Отсутствие кавычек сразу расширяется.

10
ответ дан 07.12.2019, 19:19

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

find -iname \*iprib\*

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

1
ответ дан 07.12.2019, 19:19

Теги

Похожие вопросы