Linux 查找具有多个 OR 的命令

Linux find command with multiple ORs

正在尝试获取 ~/files 中所有视频文件的列表。 Gentoo 2.7.

find ~/files -type f "( -iname *.mp4 -o -iname *.mov -o iname *.mkv )" | head
find: paths must precede expression: `( -iname *.mp4 -o -iname *.mov -o iname *.mkv )'

我尝试删除引号并转义括号和星号,并删除类型限制,但同样的错误。

使用单个 OR 将文件类型限制为两种有效:

find ~/files -type f -iname \*.mp4 -o -iname \*.mov

我觉得我可能只是从根本上误解了 find 命令,我不确定是什么。

谢谢!

分别引用括号和通配符,使它们保持独立的参数。 find 不喜欢将它们组合成一个参数。

最后的 -iname 也少了一个破折号。

find ~/files -type f "(" -iname "*.mp4" -o -iname "*.mov" -o -iname "*.mkv" ")" | head