Объединить несколько команд в один прогон одна из них найти

В одной строке я хочу использовать команду find для получения имени файла из txt-файла, его поиска и воспроизведения, а затем после закрытия видео мне нужно запустить определенный скрипт

Я справился с первой частью, но когда дело доходит до запуска скрипта после закрытия видео, это не удается

это команда, которую я использую для воспроизведения видео

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

Мне нужно запустить скрипт после его закрытия, чтобы я изменил его

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

но с этим сообщением ничего не получается, он думает, что это неправильно, и рассматривает его как один из вариантов find

так как в одной строке я могу объединить команду после find это не связано с результатом поиска find

1 ответ

Решение

Таким образом:

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

Второй ; не избежал и будет лечиться bash как прекращение find команда.


Когда вы делаете

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

; сбежал (обратите внимание на \ перед ним) и используется для завершения команды для exec вариант, поэтому все, что после этого продолжает оставаться частью общего find команда. Поэтому, когда вам нужно запустить команду после find (и все, что он запускает) выходит, вам нужно добавить секунду ; сказать bash что все, что следует, является новой командой.

Другие вопросы по тегам