Список с 'ls' и регулярным выражением

Оболочка по умолчанию в любом 5.x-> 6.x версия AIX является ksh.

С версии 6100-04-03-1009 AIX ksh является установленной рабочей версией M-11/16/88f.

Для отображения версии на машине изменитесь на vi-режим:

# set -o vi

Хит Esc, затем Ctrl-v хита.

# Version M-11/16/88f
14
05.08.2012, 03:31
2 ответа

Как насчет:

ls *[!0-9][0-9].txt

! в начале группы дополняет ее значение.

Как отмечено в комментариях, это - выполнение удара, попробуйте, например:

printf "%s\n" *[!0-9][0-9].txt
19
27.01.2020, 19:51

С расширенными глобусами ksh (, bash -O extglobили zsh -o kshglob), которые вы уже используете, это будет:

ls -d -- ?(*[![:digit:]])[[:digit:]].txt

Или

ls -d -- !(*[[:digit:]])[[:digit:]].txt

Если вы хотите сопоставитьa1.txtи 2.txt, но не a12.txtи 12.txt.

Однако обратите внимание, что в ksh и bash (, если вы не установите параметр failglobдля получения поведения, аналогичного zsh ), если этот шаблон не соответствует ни одному файлу, шаблон будет передан буквально в ls, и если этот (файл со странным именем )существует, он будет указан как ls, даже если он не соответствует самому шаблону.

Чтобы включить .2.txt, установите параметр dotglobв bash, добавьте квалификатор (D)glob в zshили установите FIGNOREна !(.|..)в ksh93.

0
27.01.2020, 19:51

Теги

Похожие вопросы