Zsh доступен в большинстве дистрибутивов, но часто не является частью стандартной установка. Если установка не представляет проблемы, используйте ее, так как функция glob qualifier решает вашу проблему очень легко:
#!/bin/zsh
cd $MYWEBAPPSRV_DIR
TMPLIST=(*(/n))
for app in $TMPLIST; do … done
glob *
перечисляет все файлы (кроме файлов точек), затем квалификатор glob /
выбирает только те, которые являются каталогами, а n
вызывает числовую сортировку для последовательностей цифр вместо лексикографического порядка по умолчанию.Если вы не хотите переходить в каталог, но хотите исключить часть каталога из совпадений, используйте модификатор раскрытия истории , чтобы сохранить только часть базового имени:
#!/bin/zsh
TMPLIST=($MYWEBAPPSRV_DIR/*(/n:t))
for app in $TMPLIST; do … done
При установке zsh непрактично, и вы используете систему с GNU coreutils (например, невстроенный Linux, Cygwin), а имена файлов не содержат специальных символов (пробелов или подстановочных знаков), тогда вы можете использовать ls -v
для сортировки имен файлов в числовом порядке последовательностей цифр и -F
для отображения типов файлов в сочетании с текстовым фильтром для выбора только каталогов.
TMPLIST=$(ls -Fv $MYWEBAPPSRV_DIR | sed -n 's!/$!!p')
for app in $TMPLIST; do … done