Você pode negar o padrão de globbing:
for f in !(*.*); do html2text "$f" > "$f.txt"; done
Isso, diferente de usar find
em for f in "$(find [...])"; do [...]; done
(ou executando find
em uma subshell usando backticks), não quebrará em nomes de arquivos contendo novas linhas (e, FWIW, evita bifurcar uma sub-shell e executar outro processo ).
Para que isso funcione, você precisará ativar a opção extglob
de bash
na sua atual bash
instance; no entanto extglob
deve estar ativado por padrão:
user@debian:~/tmp$ shopt extglob
extglob on
Se extglob
estiver desativado, você poderá ativá-lo executando:
shopt -s extglob
e desligue-o novamente executando:
shopt -u extglob
Um exemplo usando echo
:
user@debian:~/tmp$ tree
.
├── file1
├── file1.html
├── file2
├── file2.html
├── file3
└── file3.html
0 directories, 6 files
user@debian:~/tmp$ for f in !(*.*); do echo "$f"; done
file1
file2
file3