Сопоставление связывается сильнее, чем оператор -o
. Таким образом, ваша команда эквивалентна
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 \)
, и удаляются только файлы недельной давности, соответствующие cap _ *. Webm
.
Кроме того, если есть какие-либо файлы, соответствующие одному из шаблонов в текущем каталоге, то этот шаблон заменяется списком совпадающих файлов. Если шаблон соответствует ровно одному файлу в текущем каталоге, то в подкаталогах будут сопоставлены только файлы с тем же именем; если он соответствует двум или более файлам, вы получите синтаксическую ошибку.
Вы ищете команду
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
. Вы можете сократить ее до
find C:\\path\\to\\Pictures\\pmcctv \
-regex '.*/cap_[^/]*\.\(jpg\|ogg\|flv\|mp4\|webm\)' \
-mtime +7 -delete
Или вы можете использовать zsh и, в частности, его квалификатор glob m
, чтобы сопоставить файлы по времени модификации.
rm C:\\path\\to\\Pictures\\pmcctv/**/cap_*.(jpg|ogg|flv|mp4|webm)(md+7)