combinar comandos multible em uma corrida, um deles é encontrar

0

Eu quero em uma linha um comando para usar find para obter um nome de arquivo de um arquivo txt, procurá-lo e reproduzi-lo, depois de fechar o vídeo eu preciso executar um determinado script

Eu consegui a primeira parte, mas quando se trata de executar o script depois de fechar o vídeo, ele falha

este é o comando que eu uso para reproduzir o vídeo

find /Videos/ -name $(grep -vm 1 OK '~/content') -exec vlc {} \;

Eu preciso executar um script depois de fechá-lo, então eu o modifiquei

find /Videos/ -name $(grep -vm 1 OK '~/content') -exec vlc {} \; sh '~/close.sh'

mas falha com essa mensagem, ela acha errado e o bash manipula como uma das opções de find

Então, como em uma linha eu posso combinar um comando após find que não está relacionado ao resultado da pesquisa do find

    
por Fat Mind 05.09.2014 / 23:06

1 resposta

2

Assim:

find /Videos/ -name $(grep -vm 1 OK '~/content') -exec vlc {} \; ; sh '~/close.sh'

O segundo ; não é ignorado e será tratado por bash ao finalizar o comando find .

Quando você faz

find /Videos/ -name $(grep -vm 1 OK '~/content') -exec vlc {} \; sh '~/close.sh'

O ; tem escape (observe o \ antes dele) e é usado para finalizar o comando para a opção exec , portanto, qualquer coisa depois disso continua a fazer parte do comando find geral. Portanto, quando você precisar executar um comando após a saída de find (e qualquer coisa que ele execute), será necessário adicionar um segundo ; para informar bash de que o que segue é um novo comando.

    
por muru 05.09.2014 / 23:12