Existem algumas diferenças no comportamento das linhas de comando:
- A linha de comando
findexcluiria arquivos recursivamente em subdiretórios , a linha de comandormnão. Você precisa considerar se deseja ou não reciclar. - A linha de comando
findexcluiria todos os arquivos, se possível. A linha de comandormpode 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
findseria bem sucedida para qualquer número de arquivos . A linha de comandormpode 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
findignora todas as mensagens de saída (usando os redirecionamentos para>/dev/null). A linha de comandormimprime 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.