Утилита 'find' не выводит все файлы при использовании подстановочных знаков
Бег:
$find . -name *.exe
дает:
./MakeItSo_1.2.2/MakeItSo_1.2.2/MakeItSo.exe
./MakeItSo.exe
но это не единственные исполняемые файлы в каталоге. Например, бег
$find . -name ATLTester.exe
дает:
./Debug/ATLDmoVexaTester.exe
1 ответ
Решение
Это из-за ракушек. Пытаться:
find . -name "*.exe"
Когда не указано, *.exe
распространяется на все *.exe
файлы в текущем каталоге, если их нет. Так получилось, что у вас есть только один такой файл, поэтому ваша оригинальная команда была на самом деле:
find . -name MakeItSo.exe
Если бы у вас не было *.exe
файлы в текущем каталоге, тогда не произойдет глобализация оболочки, find
мог получить *.exe
аргумент буквально и ваша команда будет работать, как вы ожидали. С другой стороны, если у вас есть более одного файла с этим расширением, все они будут переданы в качестве аргументов find
и это приведет к синтаксической ошибке.