A justaposição se liga mais strongmente do que o operador -o
. Então seu comando é equivalente a
find C:\path\to\Pictures\pmcctv \( -name cap_*.jpg \) -o \
\( -name cap_*.ogg \) -o \
\( -name cap_*.flv \) -o \
\( -name cap_*.mp4 \) -o \
\( -name cap_*.webm -mtime +7 -delete \)
e apenas arquivos de uma semana que correspondem a cap_*.webm
são excluídos.
Além disso, se houver algum arquivo correspondente a um dos padrões no diretório atual, esse padrão será substituído pela lista de arquivos correspondentes. Se o padrão corresponder exatamente a um arquivo no diretório atual, somente os arquivos com o mesmo nome serão correspondidos nos subdiretórios; se corresponder a dois ou mais arquivos, você receberá um erro de sintaxe.
O comando que você está procurando é
find C:\path\to\Pictures\pmcctv \
\( -name 'cap_*.jpg' -o -name 'cap_*.ogg' -o -name 'cap_*.flv' -o -name 'cap_*.mp4' -o -name 'cap_*.webm' \) \
-mtime +7 -delete
Você pode abreviá-lo para
find C:\path\to\Pictures\pmcctv \
-regex '.*/cap_[^/]*\.\(jpg\|ogg\|flv\|mp4\|webm\)' \
-mtime +7 -delete
Ou você pode usar o zsh e, em particular, seu qualificador m
para arquivos de correspondência por hora de modificação.
rm C:\path\to\Pictures\pmcctv/**/cap_*.(jpg|ogg|flv|mp4|webm)(md+7)