Answers:
是的你可以:
find /media/d/ -type f -size +50M ! \( -name "*deb" -o -name "*vmdk" \)
从说明POSIX规范:
! 表达:否定一次; 一元NOT运算符。
(expression):如果expression为true,则为true。
expression -o expression:基元的替代;OR运算符。如果第一个表达式为true,则不对第二个表达式求值。
请注意,括号(无论是打开还是关闭)都以反斜杠(\
)作为前缀,以防止被外壳程序评估。
-exec
对find
结果进行任何操作或其他操作,请记住\( \)
在整个条件上加上括号,否则-exec
仅适用于最后使用的-or
条件。要对所有这些对象进行处理,请在它们后面find \( <criterion> -o <criterion> \) -exec <command>
您可以使用正则表达式,如下所示:
find /media/d -type f -size +50M ! -regex '\(.*deb\|.*vmdk\)'
反斜杠是转义字符;.
匹配单个字符,并与零个或多个字符匹配*
,因此.*
意味着匹配零个或多个字符。
-regex
它的便携性不如-name
。