Execute o html2text em todos os arquivos em um diretório que não tenha uma extensão

1

Eu tenho um diretório cheio de muitos arquivos sem extensões que foram colocados lá por uma chamada para wget.

Eu quero usar o html2text para converter todos esses arquivos em arquivos de texto simples.

Em outras palavras, como executar este comando

html2text listbaba=A > listbaba=A.txt

mas não apenas em listbaba=A , mas todos os arquivos no diretório atual com extensões no . Na internet, encontra-se este exemplo:

 for file in *.html; do html2text "$file" > "$file.txt"; done 

mas a questão é por que eu devo substituir "*.html" para fazer isso para todos os arquivos com não extensões ~

    
por user2413 25.07.2015 / 01:33

2 respostas

2

Você pode usar um sinalizador not em um comando find e iterar sobre essa saída.

Encontre arquivos que não possuam uma extensão ou arquivos mais específicos que não tenham um ponto em seus nomes:

find . -type f -not -name "*.*"

Itere esses arquivos e chame html2text :

for file in 'find . -type f -not -name "*.*"'; do html2text "$file" > "$file.txt"; done
    
por Christophe De Troyer 25.07.2015 / 01:50
4

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
    
por kos 30.08.2015 / 19:15