A saída está parada devido a & (e comercial). Eu preciso colocar cada linha de saída entre aspas? Eu acho que?

2

Eu uso o pushbullet para enviar uma lista de arquivos modificados recentemente para o meu telefone todas as manhãs. Eu uso Find e printf para limpar a lista e empurrá-lo para um script pushbulet.

/home/user/scripts/pushbullet/pushbullet.sh "Synced: 'find /mnt/1tb/tv/ /mnt/1tb/movies/ -type f -ctime -1 | wc -l'" "'find /mnt/1tb/tv/ /mnt/1tb/movies/ -type f -ctime -1 -printf "%f\n"'"

Primeiro, obtém a contagem de arquivos modificados e, em seguida, uma lista dos arquivos modificados sem o diretório.

O problema é que se o nome do arquivo for File&Cheese.mkv , a mensagem enviada para mim será interrompida em 'Arquivo' e nada após o E comercial ser enviado. Este é um problema com o script pushbullet.

Eu acho que seria mais fácil apenas certificar-me de que cada linha da lista que é enviada entre aspas, mas eu não posso descobrir como fazer isso.

Alguma idéia?

    
por Daisyqq 18.11.2016 / 00:41

1 resposta

1

Você pode colocar cada nome de arquivo entre aspas, canalizando a saída find para while e usando echo

find ... |  while read line ; do echo \""$line"\" ; done

substitua find ... pelo comando find inteiro.

As cotas de escape \" imprimirão literal " em cada linha, mas também citar a variável para evitar expansões.

A saída será parecida com

"my file"
"another file"
"File&Cheese.mkv"
    
por Zanna 18.11.2016 / 00:57