Solaris — Получить имена каталогов, начинающиеся с шаблона.

Для дистрибутивов на основе RPM, таких как Ret Hat, Fedora или CentOS, вы можете использовать следующую команду:

$ rpm -qa

Для дистрибутивов на основе DPKG, таких как Ubuntu, Mint или Debian, вы можете использовать команду:

$ dpkg -l

Вы также можете отфильтровать список вывода из этих конвейеров команд (| )командуйте следующим образом:

$ rpm -qa | grep python (if you are interested on python packages).

$ dpkg -l | grep python
0
06.08.2019, 10:57
2 ответа

Вы можете просто использовать awkс оператором диапазона. Если вы используете действительно старую версию awk, флаг интервала диапазона можно указать явно

.
awk '/^DATA[0-9]{5}$/' file
awk --re-interval '/^DATA[0-9]{5}$/' file

Но при этом никогда не следует анализировать вывод ls. См. Почему вы не должны анализировать вывод ls (1 ), использовать встроенную оболочку -в функциях glob. Вы можете просто сделать ниже, чтобы запустить цикл по именам каталогов

for dir in DATA[0-9][0-9][0-9][0-9][0-9]; do
    [ -d "$dir" ] || continue
    printf '%s\n' "$dir"
done
4
28.04.2021, 23:30

Использование оболочки zsh:

setopt extended_glob

for dir in DATA[[:digit:]](#c5)(/); do
    print $dir
done

или просто

printf '%s\n' DATA[[:digit:]](#c5)(/)

Расширенный шаблон подстановки DATA[[:digit:]](#c5)(/)будет соответствовать любому имени, которое начинается со строки DATA, за которой следуют ровно пять цифр([[:digit:]](#c5))и которое ссылается на каталог((/)).

1
28.04.2021, 23:30

Теги

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