renomeando pdf baseado em linux de conteúdo de linha

1

Estou tentando renomear um monte de pdfs com base em uma linha específica nos arquivos.

Até agora, estou convertendo para texto e usando o awk para imprimir a linha 41. Mas isso é tanto quanto eu tenho.

Eu tentei usar xargs para passar a saída do awk para um comando mv, mas nenhum dado até o momento.

Eu sei que provavelmente estou indo por esse caminho errado, mas se de alguma forma derramar alguma luz, eu realmente aprecio isso.

Estou tentando isso sem bash, para que eu possa criar um pseudônimo.

ls *.pdf | xargs -n1 mv 'ls *.pdf | xargs -n1 pdftotext; ls page_*.txt | xargs -n1 awk 'NR==41''.txt'
    
por byrnec25 24.03.2015 / 13:39

1 resposta

2

Você tem várias opções para escolher. Você pode escrever uma função para fazer isso, ou você pode escrever um script de shell (bash) que você também pode usar dentro do alias. E é claro que você pode tentar escrever um verso para fazer a mágica.

Eu penso em um comando na seguinte estrutura (como one-liner):

for pdf in *.pdf; do pdftotext "${pdf}"; filename='basename -s .pdf "${pdf}"'; newname='awk 'NR==41' "${filename}.txt"'; mv "${pdf}" "${newname}"; done;'

Quais podem ser reestruturados como:

for pdf in *.pdf
do
    pdftotext "${pdf}"
    filename='basename -s .pdf "${pdf}"'
    newname='awk 'NR==41' "${filename}.txt"'
    mv "${pdf}" "${newname}"
done

Este arquivo pode ser salvo como script de shell e adicionado à lista de aliases sob qualquer nome que você desejar.

    
por 24.03.2015 / 14:08