Bash Script: Como obter o nome / caminho do arquivo

2

Suponha que eu queira associar arquivos PPT a serem abertos com um script bash que o converta em PDF e, em seguida, abra-o com o editor de PDF apropriado. Como faço isso?

A conversão será feita com uniconv como aprendi de outra pergunta

uniconv -f pdf presentation.odt

Acredito que tenho que alterar "presentation.odt" com o nome do arquivo que acionou esse script

    
por Jiew Meng 21.08.2011 / 04:45

3 respostas

4

Você quer dizer que o script será chamado com (por exemplo) presentation.odt como argumento? O argumento está disponível como "" no script (as aspas duplas são necessárias se o nome do arquivo contiver caracteres como espaços que, de outra forma, o shell expandiria). Você pode construir o nome do arquivo PDF retirando o sufixo .odt : ${1%.odt} . Observe que é unoconv , não o uniconv não relacionado.

#!/bin/sh
unoconv -f pdf ""
appropriate-pdf-editor "${1%.odt}.pdf"
    
por Gilles 21.08.2011 / 14:29
1

Em um shell script, você pode acessar os parâmetros da linha de comando através da variável 1, 2, 3, ..., como em

#!/bin/bash

echo ""
echo ""
echo ""
# ...

Se você precisar, "$ 0" representa o próprio nome do script.

Você também pode reatribuir essas variáveis e shift para acessar mais de 9 parâmetros.

    
por enzotib 21.08.2011 / 08:20
0

Se você quiser encontrar todos os arquivos .odt e alimentá-los em unoconv , poderá usar a ferramenta find para localizar todos eles e enviá-los para xargs , que pode fazer o processamento paralelo. / p>

find * -type f -iname "*.odt" | xargs -i -P12 "uniconv -f pdf {}"

Isso irá find de todos os arquivos no diretório em execução, recursivamente, canalizando os arquivos que encontrar em xargs , que executarão até 12 processos de forma simultânea (use -P0 para processos ilimitados).

    
por naisanza 29.10.2013 / 22:01