Подтвердить что ты не робот

Использование регулярных выражений с ls

Я пытаюсь использовать ER (расширенные регулярные выражения) с ls как ls .+\..+.

Я пытаюсь распечатать все файлы, содержащие расширение (Я знаю, что мог бы использовать ls *.*, но я хотел попробовать использовать ER).

Когда я запускаю этот код, я получаю эту ошибку: ls: .+..+: No such file or directory.

4b9b3361

Ответ 1

Вы вводите в заблуждение регулярное выражение с shell globbing. Если вы хотите использовать регулярное выражение для соответствия именам файлов, вы можете:

$ ls | egrep '.+\..+'

Ответ 2

Вы не говорите, какую оболочку используете, но обычно не поддерживают регулярные выражения, хотя есть обычные инструменты CLI * nix (grep, sed и т.д.), которые делают.

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

Более новые версии bash имеют оператор регулярного выражения, =~:

for x in `ls`; do 
    if [[ $x =~ .+\..* ]]; then 
        echo $x; 
    fi; 
done