Ответ 1
Вы вводите в заблуждение регулярное выражение с shell globbing. Если вы хотите использовать регулярное выражение для соответствия именам файлов, вы можете:
$ ls | egrep '.+\..+'
Я пытаюсь использовать ER (расширенные регулярные выражения) с ls
как ls .+\..+
.
Я пытаюсь распечатать все файлы, содержащие расширение
(Я знаю, что мог бы использовать ls *.*
, но я хотел попробовать использовать ER).
Когда я запускаю этот код, я получаю эту ошибку: ls: .+..+: No such file or directory
.
Вы вводите в заблуждение регулярное выражение с shell globbing. Если вы хотите использовать регулярное выражение для соответствия именам файлов, вы можете:
$ ls | egrep '.+\..+'
Вы не говорите, какую оболочку используете, но обычно не поддерживают регулярные выражения, хотя есть обычные инструменты CLI * nix (grep
, sed
и т.д.), которые делают.
Какие оболочки, такие как bash, поддерживают globbing, в которых используются некоторые похожие символы (например, *), но это не одно и то же.
Более новые версии bash имеют оператор регулярного выражения, =~
:
for x in `ls`; do
if [[ $x =~ .+\..* ]]; then
echo $x;
fi;
done