回答:
はい、次のことができます。
find /media/d/ -type f -size +50M ! \( -name "*deb" -o -name "*vmdk" \)
POSIX仕様からの説明:
! expression:プライマリの否定。単項NOT演算子。
(expression):expressionが真であれば真。
expression -o expression:プライマリの交互; OR演算子。最初の式が真の場合、2番目の式は評価されません。
開始と終了の両方の括弧には\
、シェルによる評価を防ぐために、円記号()が前に付いていることに注意してください。
-exec
または上の他のアクションfind
の結果、Parentheseのことを忘れないでください\( \)
それ以外の場合は、全体の条件を-exec
のみ、最後に適用されます-or
-ed基準。それらのすべてで動作するように、それらをParentheseの:find \( <criterion> -o <criterion> \) -exec <command>
次のように正規表現を使用できます。
find /media/d -type f -size +50M ! -regex '\(.*deb\|.*vmdk\)'
バックスラッシュはエスケープ文字です。.
単一の文字*
に一致し、前の文字に0回以上.*
一致するため、0個以上の文字に一致します。
-regex
はに比べて移植性が低いことに注意してください-name
。