Existem algumas diferenças no comportamento das linhas de comando:
- A linha de comando
find
excluiria arquivos recursivamente em subdiretórios , a linha de comandorm
não. Você precisa considerar se deseja ou não reciclar. - A linha de comando
find
excluiria todos os arquivos, se possível. A linha de comandorm
pode pular arquivos com base nas configurações do shell, comoGLOBIGNORE
. Você precisa considerar se deve ou não haver nomes de arquivos que possam ser acidentalmente ignorados na expansão do nome do caminho. - A linha de comando
find
seria bem sucedida para qualquer número de arquivos . A linha de comandorm
pode falhar se a expansão do nome do caminho criar uma linha de comando > longa demais (maior que o sistema suporta). Alguns sistemas têm limites sobre isso. Você precisa considerar quantos arquivos podem precisar ser excluídos. - A linha de comando
find
ignora todas as mensagens de saída (usando os redirecionamentos para>/dev/null
). A linha de comandorm
imprime as mensagens de saída. Você precisa considerar o que deve acontecer com as mensagens.
Se essas diferenças não forem importantes para você, /bin/rm -f /var/www/cache/blah/*
funcionará para você.
Se apenas arquivos devem ser removidos e diretórios devem ser mantidos, eu usaria
/usr/bin/find /var/www/cache/blah/ -not -type d -exec /bin/rm -f -- {} + >/dev/null 2>&1
ou
/usr/bin/find /var/www/cache/blah/ -type f -exec /bin/rm -f -- {} + >/dev/null 2>&1
o que for adequado ao seu objetivo, ambos têm prós e contras.
-exec command {} +
funciona como xargs
, mas é um pouco mais eficiente. O --
impede que rm
caia se um dos nomes de arquivos começar com -
. Além disso, xargs
foi usado de uma maneira que faz muitas suposições sobre nomes de arquivos. Caracteres especiais como espaço, na verdade, quebrariam a simples invocação de xargs
. Algo como find ... -print0 | xargs -0
seria necessário e, em seguida, o find -exec command {} +
é muito mais simples.