我想用它find
来查找_101_
名称而不是扩展名的.jpg
文件.wsq
,但我无法让它工作。
我试过这样的事情:
find . -type f -name '*_101_*' -o -not -name *.jpg -o -name *.wsq
但它不起作用。
我究竟做错了什么?
我想用它find
来查找_101_
名称而不是扩展名的.jpg
文件.wsq
,但我无法让它工作。
我试过这样的事情:
find . -type f -name '*_101_*' -o -not -name *.jpg -o -name *.wsq
但它不起作用。
我究竟做错了什么?
您的尝试确实“匹配_101_
,或不以 结尾.jpg
,或不以.wsq
”结尾。这将匹配每个文件,仅基于两个扩展名,因为一个文件只能有一个。
你必须以不同的方式分组:
find . -type f -name '*_101_*' -not -name '*.jpg' -not -name '*.wsq'
这适用所有规则(隐含逻辑与)。
您还应该将参数引用到-name
,否则它们可能会被 shell 扩展而不是find
.
您需要使用括号(或@Benjamin 的解决方案)
否则a or not b or c
被评估为(a or not b) or c
。
而且您需要and
而不是or
只过滤满足两个条件的文件(通过两个测试)。a and not (b or c)
find -name '*_101_*' -not \( -name '*.jpg' -o -name '*.wsq' \)