Поскольку синтаксический анализ ls, как правило, плохая идея , вот два альтернативных решения - одно в Python как однострочное, а другое в цикле оболочки :
$ python -c "import os,sys;[sys.stdout.write(f+'\n') for f in os.listdir('.') if len(f) == 8 and '.' not in f]"
TEXTFILO
deadline
FILENAME
diskman2
Pictures
emptydir
ud_indie
strategy
EET 4330
$ for f in * ; do ! [[ $f =~ '.' ]] && [[ ${#f} -eq 8 ]] && echo "$f" ; done
deadline
diskman2
EET 4330
emptydir
FILENAME
Pictures
strategy
TEXTFILO
ud_indie
Синтаксис обоих одинаковый - мы перебираем файлы в текущем рабочем каталоге и, используя две логические проверки, проверяем, есть ли .
в имени файла и равен ли имя файла 8 символам, определите, какое имя файла печатать.
Обратите внимание, что синтаксис [[
] можно использовать с bash
, zsh
и ksh