Escreva o arquivo como:
FileOne.pdf
File Two.pdf
E use como:
set -f
IFS='
' # split on newline only
pdftk $(< Files.lst) output Combined.pdf
O comando
pdftk FileOne.pdf "File two.pdf" output Combined.pdf
funciona como esperado, mesclando o One e o Two do PDF. No entanto, se eu colocar os nomes de arquivos em um arquivo
FileOne.pdf
"File Two.pdf"
e, em seguida, use
pdftk $(< Files.lst) output Combined.pdf
Eu recebo as mensagens de erro
Error: Failed to open PDF file:
"File
Error: Unable to find file.
Error: Failed to open PDF file:
Two.pdf"
Obviamente, pdftk
está vendo as aspas, então eu não entendo como isso pode distinguir os dois casos (e é por isso que estou colocando a questão neste fórum).
Para o registro, estou usando o shell MKS Toolkit Korn, invocado pelo Emacs. Eu recebo o mesmo no shell bash do Cygwin.
Escreva o arquivo como:
FileOne.pdf
File Two.pdf
E use como:
set -f
IFS='
' # split on newline only
pdftk $(< Files.lst) output Combined.pdf
Você tem dois problemas (pelo menos).
O primeiro é que você precisa ler o seu arquivo de origem (Files.list) uma linha de cada vez. Provavelmente você pode fazer isso mais de uma maneira, mas uma delas é com read
Veja: link
O segundo é devido aos espaços em seus nomes de arquivos (resultando no erro "Falha ao abrir o arquivo PDF: Two.pdf"). Você precisa citar suas variáveis ou escapar do espaço.
, portanto, qualquer um dos itens a seguir funciona com espaços no nome do arquivo,
echo "$variable"
cat "File with spaces.txt"
cat 'File 2.txt'
cat File\ 3\ with\ spaces.txt
Existe uma solução elegante aqui:
Você pode remover as aspas do arquivo de texto e lê-lo em uma matriz com mapfile
:
mapfile -t files < Files.lst
pdftk "${files[@]}" output Combined.pdf