我想查找所有 png 和 jpg 文件,并使用以下命令,但没有返回任何结果,但如果我用它替换,则会-a
显示-o
文件列表。这是为什么?
`find . -maxdepth 1 \( -iname \*\.png -a -iname \*\.jpg \)
答案1
逻辑错误。你所说的find
是:
在此文件夹中查找所有文件(PNG 和 JPG)
但当然,没有文件两个都同时,这就是为什么作品-o
:
在此文件夹中查找所有 (PNG 或 JPG) 文件
在构建这些查询时,想象一下find
将每个文件传递给测试。然后应用布尔逻辑.例如:
它找到一个 .txt 文件。它不是 PNG(false),也不是 JPG(false),所以假 && 假等于 false
它发现是一个 .png 文件。它是 PNG(真),而不是 JPG(假),所以真假等于 false
它发现是一个 .jpg 文件。它不是 PNG(false),而是 JPG(true),所以假 && 真等于 false
如果你使用
-o
开关,并且它找到一个 .png 文件,那么它是一个 PNG(真),而不是 JPG(假),所以真 || 假等于真。
答案2
-a 是逻辑与,意味着文件名必须以 .PNG 和 .JPG 结尾才为真。
-o 是逻辑上的“或”,意味着文件名必须以 .PNG 或 .JPG(或两者)结尾才为真。