2012-10-02 12:18:00 +0000 2012-10-02 12:18:00 +0000
39
39

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.

Respostas (7)

68
68
68
2012-10-02 12:19:23 +0000

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.

29
29
29
2016-07-28 10:51:24 +0000

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.

11
11
11
2012-10-02 12:22:38 +0000

Pode usar find:

find . -name "name*" -exec rm {} \;
3
3
3
2017-02-24 03:17:48 +0000

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&).

3
3
3
2012-10-02 12:48:10 +0000

Para apagar todos os ficheiros cujo nome tenha nome, pode utilizá-lo:

find . -name 'name*' -exec rm {} \;
2
2
2
2018-08-27 16:28:09 +0000

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.

-1
-1
-1
2015-03-30 06:04:34 +0000

Procurar o número “Inode” do ficheiro/pasta e depois apagar utilizando o número do inode. Abaixo está um exemplo:

ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p

find . -inum 3407873 -exec rm -rf {} \;