3

Бег:

$find . -name *.exe

дает:

./MakeItSo_1.2.2/MakeItSo_1.2.2/MakeItSo.exe
./MakeItSo.exe

но это не единственные исполняемые файлы в каталоге. Например, бег

$find . -name ATLTester.exe

дает:

./Debug/ATLDmoVexaTester.exe

1 ответ1

7

Это из - за оболочки подстановки. Пытаться:

find . -name "*.exe"

Если не заключено в кавычки, *.exe распространяется на все файлы *.exe в текущем каталоге, если их нет. Так получилось, что у вас есть только один такой файл, поэтому ваша оригинальная команда была на самом деле:

find . -name MakeItSo.exe

Если у вас нет файлов *.exe в текущем каталоге, глобализация оболочки не произойдет, команда find получит аргумент *.exe буквально, и ваша команда будет работать так, как вы ожидали. С другой стороны, если у вас есть более одного файла с этим расширением, все они будут приведены в качестве аргументов для find и это приведет к синтаксической ошибке.

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