Eliminando extensões de nome de arquivo com find -exec

0

Ao usar find , como posso descartar a extensão do nome do arquivo original (por exemplo, .pdf ) do segundo par de -exec chaves ( {} )?

Por exemplo:

find ~/Documents -regex 'LOGIC.*\.pdf' -exec pdf2svg {} {}.svg \;

Nome do arquivo de entrada:

~/Documents/LOGIC-P_OR_Q.pdf

Nome do arquivo de saída:

~/Documents/LOGIC-P_OR_Q.pdf.svg

Nome do arquivo desejado:

~/Documents/LOGIC-P_OR_Q.svg
    
por tjt263 29.06.2018 / 14:42

2 respostas

4

Você pode usar um script de shell "in-line" e uma expansão de parâmetro :

-exec sh -c 'pdf2svg "$1" "${1%.pdf}.svg"' sh {} \;

ou (mais eficientemente, se o seu find suportar isso)

-exec sh -c 'for f; do pdf2svg "$f" "${f%.pdf}.svg"; done' sh {} +
    
por 29.06.2018 / 14:49
-1

Um método seria executar os resultados por meio de um script básico -

for i in $( find ~/Documents -regex 'LOGIC.*\.pdf' )  
do  
    o=$( echo $i | sed -e s/.pdf$// )  
    pdf2svg $i ${o}.svg  
done 
    
por 29.06.2018 / 15:01