Script Nautilus para executar uma operação em vários arquivos selecionados?

1

Eu tenho um script do Nautilus que gostaria de modificar para que ele realize uma única operação usando vários arquivos selecionados como entrada. Alguém pode explicar como conseguir isso?

Eu tentei command $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS e o que o script faz é executar command file1 e, em seguida, command file2 como duas operações distintas. Isso não funciona para o meu caso de uso, em vez disso eu preciso do script para executar command file1 file2 .

Se for importante, estou usando-o com o comando align_image_stack , que precisa de 2 ou mais arquivos de imagem como entrada. Eu iniciei o Nautilus a partir de um terminal para ver mensagens de erro e recebo "align_image_stack: pelo menos dois arquivos precisam ser especificados" . Eu testei alguns comandos mostrados abaixo, mas todos produzem a mesma mensagem de erro. Eu acho que o problema é a variável $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS produz novas linhas, mas eu não sei mais como capturar caminhos de arquivos selecionados.

align_image_stack "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
align_image_stack $(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
align_image_stack printf("$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
echo -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | xargs -I align_image_stack "{}"
    
por Tom Brossman 02.07.2018 / 22:16

1 resposta

0

Eu nunca consegui obter $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS funcionando, mas aqui está o que funcionou:

command $(echo -n "$@")

Eu acredito que isso é chamado de substituição de comando, e os caracteres "$ @" inserem todos os arquivos selecionados no comando juntos como entrada, com o argumento -n suprimindo as novas linhas depois que o echo as lista.

Se você precisar alinhar e fundir um grupo de fotos entre colchetes, aqui está um script do Nautilus que agora é testado e funciona perfeitamente. Ele envia o produto acabado para a sua área de trabalho (o nome do arquivo é a hora atual) e limpa todos os arquivos temporários depois:

#!/bin/bash
align_image_stack -a BATCH -C $(echo -n "$@") && enfuse -o ~/Desktop/$(date '+%Y-%m-%d-%T').tif BATCH*.tif && rm BATCH*.tif
    
por 03.07.2018 / 10:31