一次运行中组合多个命令,其中之一是 find

一次运行中组合多个命令,其中之一是 find

我想要一行命令来使用 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'

但它失败了,并显示此消息,它认为它是错误的,并且 bash 将其作为以下选项之一进行处理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其后的任何内容都是新命令。

相关内容