find
é muito útil para executar seletivamente ações em uma árvore inteira.
find . -type f -name ".Apple*" -delete
Aqui, o -type f
certifica-se de que é um arquivo, não um diretório, e pode não ser exatamente o que você deseja, pois também ignora links simbólicos, sockets e outras coisas. Você pode usar ! -type d
, que literalmente significa não diretórios, mas também pode excluir dispositivos de caracteres e de blocos. Eu sugeriria olhar o predicado -type
na página man para find
.
Para fazer isso estritamente com um curinga, você precisa de suporte avançado ao shell. O Bash v4 tem a globstar
opção , que permite corresponder recursivamente subdiretórios usando **
. zsh
e ksh
também suportam esse padrão. Usando isso, você pode fazer rm -rf **/.Apple*
. Isso não é POSIX-padrão, e não é muito portátil, então eu evitaria usá-lo em um script, mas para uma ação de shell interativa única, tudo bem.