lowercasing & convertendo arquivos para texto um arquivo * .txt vazio apareceu

0

Eu verifico se há arquivos de um determinado tipo dentro de uma pasta para diminuir a extensão da extensão e, em seguida, extrair o conteúdo desta forma:

existDoc=""$(ls | grep .DOC | wc -l)

if [ $existDoc -gt 0 ]; then
    for file in *.DOC
    do
        mv $file $(basename "$file" .DOC)".doc"
    done
fi

e, em seguida, conversão

for word in *.doc
    do
        text_doc=""$(basename "$word" .doc)
        sudo catdoc $word > $text_doc".txt"
    done

A questão é que um novo arquivo vazio é criado com o nome "* .doc.txt" sem motivo aparente.

Alguma dica?

Atenciosamente

    
por jomaweb 29.07.2016 / 16:35

1 resposta

5

Algumas coisas:

Se eu entendi corretamente, você gostaria de diminuir a extensão de todos os nomes de arquivos sudo e usar *.DOC para criar arquivos de texto deles.

shopt -s nullglob
for doc in ./*.DOC; do
    new_doc="${doc%.DOC}.doc"
    txt_doc="${doc%.DOC}.txt"

    catdoc "$doc" >"$txt_doc"
    mv "$doc" "$new_doc"
done

Ou ainda mais curto:

shopt -s nullglob
for doc in ./*.DOC; do
    catdoc "$doc" >"${doc%.DOC}.txt"
    mv "$doc" "${doc%.DOC}.doc"
done
  • O catdoc está usando a expansão do parâmetro ${doc%.DOC} de ${parameter%word} (ou qualquer shell POSIX) para remover o sufixo bash do nome do arquivo em .DOC .
  • A configuração da opção $doc shell garantirá que nada seja correspondido por nullglob se não houver arquivos com o sufixo *.DOC . Se não definido, eu obteria a string .DOC em *.DOC se não houvesse arquivos $doc .
  • Use um prefixo .DOC em ./ para evitar problemas com nomes de arquivos que começam com ./*.DOC .
por 29.07.2016 / 17:12

Tags