Como fazer um loop sobre diretórios e limpar o script bash

3

Como posso tornar esse script mais limpo? Eu estou supondo que uma maneira é criar algo que mantenha os vários caminhos e loops sobre eles. Existe mais alguma coisa que eu possa fazer para tornar esse limpador mais limpo e não apenas um bloco repetido de loops?

#!/bin/bash/
SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/forms/*.pdf'
for file in $SRCD
do
    echo ${file}
    destfile="${file/.pdf/_source.txt}"
    echo ${destfile}
    qpdf --qdf --object-streams=disable ${file} ${destfile}
done

SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/data/*.pdf'
for file in $SRCD
do
    echo ${file}
    destfile="${file/.pdf/_source.txt}"
    echo ${destfile}
    qpdf --qdf --object-streams=disable ${file} ${destfile}
done

SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/maps/*.pdf'
for file in $SRCD
do
    echo ${file}
    destfile="${file/.pdf/_source.txt}"
    echo ${destfile}
    qpdf --qdf --object-streams=disable ${file} ${destfile}
done

SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/none/*.pdf'
for file in $SRCD
do
    echo ${file}
    destfile="${file/.pdf/_source.txt}"
    echo ${destfile}
    qpdf --qdf --object-streams=disable ${file} ${destfile}
done
    
por Connor M 01.09.2016 / 17:35

1 resposta

4

Podemos simplificar isso em um único loop, passando todos os nomes de arquivos de uma só vez:

#!/bin/bash

for file in /Users/Connor/Documents/GitHub/WhatThePDF/dat/{forms,data,maps,none}/*.pdf
do
  echo "${file}"
  destfile="${file/.pdf/_source.txt}"
  echo "${destfile}"
  qpdf --qdf --object-streams=disable "${file}" "${destfile}"
done

Por questões de legibilidade, podemos dividir isso um pouco

por exemplo, cd para o diretório e abortar se falhar:

#!/bin/bash

cd /Users/Connor/Documents/GitHub/WhatThePDF/dat || exit 255

for file in {forms,data,maps,none}/*.pdf
do
  echo "${file}"
  destfile="${file/.pdf/_source.txt}"
  echo "${destfile}"
  qpdf --qdf --object-streams=disable "${file}" "${destfile}"
done
    
por 01.09.2016 / 18:13

Tags