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.