Como apagar arquivos com a mesma extensão de uma só vez usando rm?

1

Eu tinha compilado muitos programas C juntos, e cada um dos arquivos tinha um .gch criado. Agora eu não queria os arquivos .gch , então decidi excluí-los. Mas levaria muito tempo usando rm para excluir cada arquivo. Existe uma maneira de remover arquivos com a mesma extensão de uma só vez?

NOTA: Eu trabalho no Ubuntu 14.04. Eu quero que a solução esteja em shell ou terminal . A questão não é duplicada, pois quero usar apenas rm .

    
por fortunate_man 16.01.2016 / 17:15

4 respostas

4

use facilmente a expansão "*":

rm /path-to-directory/*.gch

Isso é chamado de expansão de nome de arquivo, que usa alguns caracteres especiais chamados curingas.

suponha que você tenha um diretório contendo os arquivos (arquivo, arquivo0, arquivo1, arquivo01)

Alguns sabem curingas:

O ponto de interrogação (? ) é um caractere especial que faz com que o shell gere nomes de arquivos. Ele corresponde a qualquer caractere único no nome de um arquivo existente.

exemplo:

ls file?

O shell expande o "arquivo" argumento e gera uma lista de arquivos no diretório de trabalho que possuem nomes compostos de "arquivo" seguido por qualquer caractere único.

Em seguida, a saída seria file0 e file1

O asterisco (*) executa uma função semelhante à do ponto de interrogação, mas corresponde a qualquer número de caracteres, incluindo zero caracteres, em um nome de arquivo.

agora a saída do comando:

ls file*

seria arquivo, arquivo0, arquivo1 e também arquivo01

Os [] Caracteres Especiais fazem com que o shell corresponda a nomes de arquivos contendo os caracteres individuais dentro dos colchetes.

por exemplo, a saída do comando:

ls file[01]*

seria:

arquivo0 arquivo1 arquivo01

Esta é apenas uma introdução simples para expansão de shell, você pode ler mais:

por Maythux 16.01.2016 / 17:18
3

Para remover arquivos com a mesma extensão de uma só vez, use apenas o comando find .

find /path/to/directory -type f -iname '*.gch' -delete
  • -type informa find se você estiver pesquisando por files ou directories , aqui:

    f = arquivo

    d = diretório

  • iname informa find sobre o nome do arquivo que você está procurando.

    Nota : name faz a mesma coisa, mas iname é recomendado porque ignora os casos, enquanto name não.

  • -delete exclui esses arquivos

por Raphael 16.01.2016 / 17:40
0

Basta digitar o seguinte comando no terminal (shell)

rm -rf  /path/to/files/*.<extension>

Cuidado com o parâmetro -f. Não avisará antes de excluir.

    
por Sohail 16.01.2016 / 18:24
0

Se você estiver usando C e Makefiles, também poderá criar um destino de receita .PHONY e rm por padrão e incluir os arquivos "cruft" de subproduto que serão excluídos de um diretório de origem limpo. Você ainda usa o token curinga *.

make clean

por exemplo

   .PHONY clean


    clean:  
         rm -f *.gch  *.o *.temp *.log

então você multiplicou sua produtividade na eliminação de lixo.

    
por daemondave 16.01.2016 / 17:28