Wie finde ich Dateien, die nicht von einem bestimmten Typ sind?

7

Ich versuche, alle verschiedenen Dateitypen in meinem unorganisierten Musikordner herauszufinden. Ich habe diesen Befehl versucht (um Dateien mit anderen Typen als den, von denen ich weiß, dass sie dort sind, aufzulisten):

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"

Aber es funktioniert nicht. Wie würde ich diesen Befehl zum Laufen bringen? Gibt es eine Möglichkeit, dies mit -regex zu tun?

Vielen Dank!


quelle
Da der Titel explizit nach "Dateityp" fragt, nicht nach Dateinamenerweiterung oder so: Verwenden Sie den Befehl, um den Dateityp basierend auf dem zu finden, was tatsächlich in der Datei enthalten ist file.
Volker Siegel

Antworten:

7

Sie haben geschrieben (redundante Klammern aus Gründen der Übersichtlichkeit hinzugefügt):

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" \)

Entweder -and -notdurchgehend verwenden oder ordurchgehend verwenden und mit beenden -print(was bedeutet: nichts dafür tun, sonst nichts dafür tun usw., sonst drucken). Sie sollten die Suche auch auf reguläre Dateien beschränken, da sonst Verzeichnisse aufgelistet werden.

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
Gilles 'SO - hör auf böse zu sein'
quelle
Um zu verdeutlichen, wie der zweite Befehl funktioniert, den Sie geschrieben haben, bedeutet dies, dass Sie in zUnorganized Dateien suchen, die KEINE Dateien sind oder diese Typen haben und nichts tun, andernfalls drucken?
1
Die Auswertung erfolgt von links nach rechts, und die Kurzschlussauswertung bedeutet, dass die Auswertung des Drucks nur dann stört, wenn alle vorhergehenden Tests falsch sind.
Kowh