Для дистрибутивов на основе 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
Вы можете просто использовать 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
Использование оболочки 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)
)и которое ссылается на каталог((/)
).