从目录中删除所有文件类型不起作用

从目录中删除所有文件类型不起作用

我的目录如下:

音乐:1.mp3、2.flac、3.wav、4.ogg 和 5.mp4

我尝试使用以下命令删除所有扩展名为 .mp3、.wav、.flac 和 .ogg 的文件:

find ./Music -type f -name \('*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg'\) -delete

但它对目录没有任何作用

知道为什么吗?

(顺便说一句,我比音乐目录高一级)

答案1

你的语法错误。您希望所有-name选项都在同一个括号中,并在括号周围有一个空格,如下所示:

find ./Music -type f  \( -name '*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg' \) -delete

您原来的命令正在使用,-name \('*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg'\)这意味着它正在查找名为\(*.mp3, or '*.wav'or '*.flac'or 的文件'*.ogg'\)。如果您运行不带选项的命令,您可以看到这一点-delete

$ find ./Music -type f -name \('*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg'\) 
./Music/3.wav
./Music/2.flac

\('*.mp3'由于或没有匹配项*.ogg\),因此未找到这些文件。由于您没有将命令分组在括号中(您需要在括号周围留有空格才能使其工作),因此-delete未按您的预期应用(抱歉,我不知道如何find解析它)。

相关内容