Вы можете просто использовать 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