Com o comando original, não é find
que não corresponde a nada, exceto ao shell.
Ou seja, quando você corre
find /tmp/my_files_*.cache -mtime +1 -delete
Se houvesse arquivos correspondentes, a funcionalidade globbing do shell expandia esse curinga e a invocação find
real seria algo como:
find /tmp/my_files_1.cache /tmp/my_files_2.cache /tmp/my_files_3.cache -mtime +1 -delete
(isso pode facilmente se tornar um comando muito muito , que em alguns casos pode ser um problema em si)
Quando não há correspondências, o curinga é passado como está, portanto, a invocação find
seria semelhante:
find /tmp/my_files_*.cache -mtime +1 -delete
e se comportando como a maioria dos programas find
não faz nenhum tipo de expansão curinga por conta própria para o (s) argumento (s) do caminho, por isso tenta encontrar um arquivo / diretório que seja literalmente denominado /tmp/my_files_*.cache
.
Como foi apontado por Ipor Sircer, a maneira mais idiomática de usar find
é dar a ele o (s) caminho (s) base (s) e deixar find
procurar o conteúdo do diretório e aplicar filtros conforme necessário.
Algo como isso deve corresponder ao que você estava tentando fazer:
find /tmp -maxdepth 1 -name "my_files_*.cache" -mtime +1 -delete