我想搜索不符合 2 个-name条件的文件。我可以这样做:
find /media/d/ -type f -size +50M ! -name "*deb" ! -name "*vmdk"
Run Code Online (Sandbox Code Playgroud)
这将产生正确的结果,但我可以用 OR 以某种方式加入这两个条件吗?
Ser*_*rge 211
是的你可以:
find /media/d/ -type f -size +50M ! \( -name "*deb" -o -name "*vmdk" \)
Run Code Online (Sandbox Code Playgroud)
来自POSIX 规范的解释:
! 表达式: 一个主要的否定;一元 NOT 运算符。
( expression ): 如果表达式为真,则为真。
表达式 -o 表达式:原色的交替;OR 运算符。如果第一个表达式为真,则不应计算第二个表达式。
请注意,左括号和右括号都以反斜杠 ( \) 为前缀,以防止 shell 进行评估。
Ale*_*ach 64
您也可以使用否定来做到这一点-regex:-
find ./ ! -regex '.*\(deb\|vmdk\)$'
Run Code Online (Sandbox Code Playgroud)
Den*_*din 37
您已接近解决方案:
find /media/d/ -type f -size +50M -and ! -name "*deb" -and ! -name "*vmdk"
Run Code Online (Sandbox Code Playgroud)
您可以按任意顺序组合以下逻辑运算符:
-a -and - operator AND
-o -or - operator OR
! - operator NOT
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用正则表达式,如下所示:
find /media/d -type f -size +50M ! -regex '\(.*deb\|.*vmdk\)'
Run Code Online (Sandbox Code Playgroud)
反斜杠是转义字符;.匹配单个字符,*用于匹配前一个字符零次或多次,因此.*意味着匹配零个或多个字符。
| 归档时间: |
|
| 查看次数: |
152809 次 |
| 最近记录: |