如何对 -find 使用多个条件

6 command-line find 18.04

我有一个文件夹,我想在其中启动一个脚本来删除所有 .png 和 .jpg,除了那些以“cover”开头的文件之外,我的未标记音乐所在的文件夹。这是我尝试过的:

find . -name '*.jpg' -or -name '*.png' -not - -name 'cover.*'
Run Code Online (Sandbox Code Playgroud)
find . (-name '*.jpg' -or -name '*.png'\) -not - -name '*.png'
Run Code Online (Sandbox Code Playgroud)

以及两者的其他变体,都没有奏效。(我没有故意在末尾包含 -delete)

Bea*_*nog 8

您正在寻找的命令是:

find . -type f \( -name '*.jpg' -or -name '*.png' \) -not -name "cover.*"
Run Code Online (Sandbox Code Playgroud)
  • 添加type -f将使find命令只查找文件。

  • 在您的第二个命令中,您需要在\(前后添加一个空格\)(您也忘记了\before ()。

  • 此外,您不需要-介于-not和之间-name。如果您删除它,您的第一个命令可以正常工作,尽管不会产生您想要的输出(请参阅 JoL 的评论)。

您可以find在命令的在线Ubuntu 联机帮助页上阅读有关的语法和选项的更多信息,或运行该命令man find以在终端中阅读手册。具体来说,请阅读OPERATORS手册部分,因为这似乎是最让您感到困惑的部分。

注意:大多数终端命令都提供了包含正确命令语法和可用选项的手册,如果您man <command>在终端中运行,您可以阅读这些手册。