Não há cache porque o comando mv
nem sequer vê o caractere curinga.
O que acontece é que a linha de comando expande o curinga e passa a lista expandida para mv
Então, se você tivesse foo/1' and
foo / 2 and
foo / 3 ', então rodando
mv foo/* bar/
expandirá e na verdade será executado
mv foo/1 foo/2 foo/3 bar/
Quando o shell terminar a expansão e começar a executar o comando mv
, qualquer alteração no diretório foo
(por exemplo, foo/4
é adicionado) não fará parte do comando e será deixada para trás.
Esse processo é conhecido como globbing
.