Como remover todos os ficheiros começando com uma determinada string no Linux
Preciso de encontrar todos os ficheiros que começam com o nome NAME numa árvore de directórios e remover todos estes ficheiros usando um comando shell.
Preciso de encontrar todos os ficheiros que começam com o nome NAME numa árvore de directórios e remover todos estes ficheiros usando um comando shell.
Apagar todos os ficheiros do directório actual e dos seus subdirectórios onde o nome do ficheiro começa com “foo”:
$ find . -type f -name foo\* -exec rm {} \;
NB: use com precaução - faça uma cópia de segurança primeiro - também faça primeiro uma cópia de segurança, por exemplo
$ find . -type f -name foo\*
apenas lhe dirá os nomes dos ficheiros que seriam apagados.
Tentei desta forma que está a funcionar para mim tentar abaixo do comando.
rm -rf Example*
aqui “Exemplo” é um texto que é comum para todos os ficheiros.
Com a opção globstar (activar com shopt -s globstar):
rm -f **/NAME*
**/ expande para ./, */, */*/, */*/*/, NAME etc. Se tiver um nome directório que comece por rm, o comando reclamará que rm não pode remover directórios, mas isso é tudo.
Note que isto pode ter limitações de comprimento de linha de comando se o glob corresponder a muitos ficheiros.
Em alternativa, com o menor número possível de invocações de +, mas não sujeito a quaisquer limitações de comprimento de linha de comando:
find . -type f -name 'NAME*' -exec rm -f {} +
(Repare no \; em vez do -exec para fechar a declaração 0x6&).
find . -name 'foo'* -type f -delete parece ser a resposta mais simples.
Pode executar isto sem a bandeira -delete antes para ver quais os ficheiros que serão apagados.