Вы путаете регулярные выражения с шаблонами поиска оболочки.
? в оболочке означает любой отдельный символ.
? в средствах regexp предыдущий символ (или подшаблон) является дополнительным.
Попытка:
find . -regex '.*ooks?' -type f
Из страницы справочника находки:
-regex pattern File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named `./fubar3', you can use the regular expression `.*bar.' or `.*b.*3', but not `f.*r3'. The regular expressions understood by find are by default Emacs Regular Expressions, but this can be changed with the -regextype option.
Как правило странные ошибки как этот происходят из-за файла, называемого от одного из различных файлов инициализации Ваши чтения оболочки. Какой, будет зависеть от оболочки, Вы используете и как Вы запускаете его.
Вот изящная функция, которая просмотрит всех возможных bash
файлы init и grep
их для того, что Вы ищете. Добавьте эти строки к Вашему ~/.bashrc
:
grep_bash(){
for f in ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_login \
/etc/profile /etc/bash.bashrc /etc/environment;
do
[ -e $f ] && grep -H HIST $f;
done
}
Можно теперь проверить, от какого файла Вы называете недостающий файл:
$ grep_bash intel-composer-2011u5-x86_64
/home/terdon/.bashrc:source /software/intel-composer-2011u5-x86_64/bin/compilervars.sh