A questão é que, com find
, lógico e vincula-se mais strong que o lógico-or. Observe:
$ ls
file1 file2 file3 file4
$ find . -name \*1 -o -name \*2 -exec echo {} \;
./file2
Acima, -name \*2
e -exec echo {} \;
estão vinculados a um lógico-e implícito. Isso é lógico e vincula mais strong que o lógico, ou -o
, que conecta o primeiro -name
ao segundo.
Para evitar isso, você precisa aplicar parênteses para agrupamento:
$ find . \( -name \*1 -o -name \*2 \) -exec echo {} \;
./file1
./file2
Ou, para o seu comando completo:
find $convfold \( -name \*.mkv -o -name \*.avi -o -name \*.mov -o -name \*.wmv -o -name \*.m4p -o -name \*.m4v -o -name \*.mpg -o -name \*.mp2 -o -name \*.mpeg -o -name \*.mpe -o -name \*.mpv -o -name \*.m2v -o -name *.m4v \) -delete
Documentação
De man find
:
Please note that
-a
when specified implicitly (for example by two tests appearing without an explicit operator between them) or explicitly has higher precedence than-o
. This means thatfind . -name afile -o -name bfile -print
will never print afile.