我想要一行命令来使用 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
其后的任何内容都是新命令。