我有一个文件夹,其中保存着未标记的音乐,我想启动一个脚本来删除所有 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-not
and-name
。如果你删除它,你的第一个命令可以正常工作,尽管不会产生你想要的输出(参见 JoL 的评论)。
您可以find
在命令的在线页面中阅读有关 的语法和选项的更多信息Ubuntu 手册页man find
,或者在终端中运行命令阅读手册。具体来说,阅读OPERATORS
手册的部分,因为这似乎是最让你困惑的部分。
笔记:大多数终端命令都提供了包含正确命令语法和可用选项的手册,您可以man <command>
在终端中运行它来阅读。