如何查找非特定类型的文件?

7 command-line find

我试图在我的无组织音乐文件夹中找出所有不同类型的文件。我一直在尝试这个命令(列出我知道的文件类型之外的文件):

find zUnorganized/ -not -iname "*.mp3" -and -not -iname "*.flac" -and -not -iname "*.MP3" -and -not -iname "*.wav" -or -not -iname "*.m4a" -and -not -iname "*.jpg"
Run Code Online (Sandbox Code Playgroud)

但它不起作用。我将如何使该命令起作用?有没有办法使用 -regex 来做到这一点?

谢谢!

Gil*_*il' 7

您写道(为清楚起见添加了冗余括号):

find zUnorganized/ \( -not -iname "*.mp3" -and -not -iname "*.flac" -and -not -iname "*.MP3" -and -not -iname "*.wav" \) \
               -or \( -not -iname "*.m4a" -and -not -iname "*.jpg" \)
Run Code Online (Sandbox Code Playgroud)

要么-and -not始终使用,要么始终使用or并完成-print(意思是:不为此做任何事情,否则不做任何事情,等等,否则打印)。您还需要将搜索限制为常规文件,否则将列出目录。

find zUnorganized/ -type f -not -iname "*.mp3" -and -not -iname "*.flac" -and -not -iname "*.MP3" -and -not -iname "*.wav" -and -not -iname "*.m4a" -and -not -iname "*.jpg"
find zUnorganized/ \! -type f -o \
                   -iname "*.mp3" -o -iname "*.flac" -o -iname "*.MP3" -o -iname "*.wav" -o -iname "*.m4a" -o -iname "*.jpg" -o \
                   -print
Run Code Online (Sandbox Code Playgroud)