Hier ist, was ich bisher habe, funktioniert es aber ein Fehler wirft, und ich bin nicht ganz sicher, warum:finden und alle Verzeichnisse löschen, die Typen bestimmte Datei nicht enthalten
$ find . -mindepth 1 -type d '!' -exec sh -c 'ls -1 "{}" | egrep -i -q "\.(mp4|avi|mkv)"' \; -print -exec rm -r {} \;
./test
find: `./test': No such file or directory
Ich empfehle Ihnen, sehr vorsichtig zu sein, wenn Sie mit der automatischen Dateilöschfunktion arbeiten. Versuchen Sie zunächst, nur den Dateinamen zu drucken, und fügen Sie nach dem vollständigen Testen den Befehl rm hinzu. – technico
erwarten Sie, dass die vollständige Pipeline "-exec" für den Wert von '{}'? Ich denke nicht, dass das richtig ist. Ich würde all diesen Code in ein Shell-Skript schreiben und 'find ... | verwenden xargs ./myShellskript.sh '. Und testen, testen, testen bevor Sie laufen! Lassen Sie es einfach die 'rm'-Befehle wiedergeben, und sobald sie richtig aussehen, leiten Sie diese zu \ '| Bash'. Viel Glück. – shellter