如何使用“find”命令的多个条件

如何使用“find”命令的多个条件

我有一个文件夹,其中保存着未标记的音乐,我想启动一个脚本来删除所有 PNG 和 JPG 文件,除了以“cover”开头的文件。

这是我尝试过的(我故意没有-delete在最后包含标志):

find . -name '*.jpg' -or -name '*.png' -not - -name 'cover.*'
find . (-name '*.jpg' -or -name '*.png'\) -not - -name '*.png'

我也尝试过上述两个命令的其他变体,但是都没有起作用。

答案1

您正在寻找的命令是:

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

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

  • 另外,你不需要-between -notand -name。如果你删除它,你的第一个命令可以正常工作,尽管不会产生你想要的输出(参见 JoL 的评论)。

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

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

相关内容