Como remover arquivos recursivamente no Linux

Como remover arquivos recursivamente no Linux
Este tutorial do Linux explica como remover arquivos recursivamente usando diferentes técnicas disponíveis.

Depois de ler este artigo, você poderá encontrar e remover arquivos únicos ou múltiplos da linha de comando. Este tutorial é otimizado para usuários de Linux novos e experientes.

A primeira seção deste tutorial explica como remover os arquivos recursivamente (diretórios com todo o conteúdo e conteúdo dos subdiretos). Abaixo, também adicionei instruções para remover recursivamente certos tipos de arquivos, dependendo de seu tamanho, extensão, criação ou tempo de modificação e permissões.

Todos os exemplos práticos deste documento contêm capturas de tela para facilitar para cada usuário do Linux entender e aplicá -los às suas necessidades.

Excluindo todos os arquivos recursivamente no Linux

A primeira seção mostra como usar o rm (Remover) comando para excluir um diretório com todo o seu conteúdo, incluindo todos os subdiretos com seus arquivos e subdiretos adicionais.

O rm comando usado com -r A bandeira removerá o conteúdo de todos os diretórios independentemente do seu tipo.

Mas primeiro, vamos ver os diretórios em minha casa usando o ls comando.

ls ~///


Como você pode ver, tenho 5 diretórios: Desktop, dir2, documentos, downloads, e removerecurdir.

Vamos ver o conteúdo do diretório nomeado removerecurdir usando o comando árvore como mostrado na captura de tela abaixo.

Removecurdir de árvores



De acordo com árvore Saia o removerecurdir O diretório contém dois diretórios que contêm subdiretos e um arquivo dentro removecurdir: O diretório dir1, com Otherdir e Otherdir2 subdiretos e o diretório Dir2 Contém um arquivo nomeado arquivo3.

Digamos que queremos remover o removecurdir e todo o seu conteúdo, incluindo todos os arquivos e subdiretos. O comando adequado é o rm comando seguido pelo -r sinalizador como mostrado na sintaxe abaixo.

rm -r


Assim, se eu quiser remover o removerecurdir Com todo o conteúdo, eu corro:

rm -r removerecurdir/



O subsequente ls A saída mostra o diretório e todo o seu conteúdo foi removido com sucesso.

Como remover arquivos recursivamente por tamanho

Esta seção mostra como excluir recursivamente arquivos menores que 10 megabytes usando o comando encontrar.

A sintaxe é a seguinte:

encontrar -Tipo F -size - -Exec rm +


Observação Isso no exemplo abaixo, eu uso sudo Para obter privilégios para remover arquivos protegidos.

sudo find /var /log -type f -size -10m -exec rm +



A sintaxe para remover arquivos maiores que um tamanho específico é muito semelhante. O símbolo menos (-) deve ser substituído por um símbolo mais (+). A sintaxe exata é mostrada abaixo.

encontrar -Tipo F -size + -Exec rm +


No exemplo abaixo, usarei a sintaxe anterior para remover arquivos superiores a 1 GB.

encontre /var /log -Type f -size +1g -exec rm +


Como remover arquivos recursivamente por extensão (tipo de arquivo)

O capítulo atual explica como excluir arquivos recursivamente por extensão ou tipo de arquivo.

Na minha casa, tenho um diretório chamado testhint. Vamos ver seu conteúdo usando o árvore comando.

TESTE TESTHINT/



Como você pode ver, o Diretório Pais Testhint contém um arquivo (arquivo1.txt) e dois subdiretos: testhint2 contendo arquivo3.txt e o subdiretório de testehint3 contendo arquivo3 e algo.TXT.

Vamos supor que você queira remover apenas todos os arquivos TXT. A sintaxe é a seguinte:

encontrar -tipo f -name '*.'-Print -Delete


Assim, para remover todos os arquivos TXT recursivamente no diretório pai testhint, Eu corro o comando mostrado na figura abaixo.

Encontre ~/testhint -Type f -name '*.txt '-print -delete



Como você pode ver, todos os arquivos TXT foram removidos e apenas arquivo3 sem uma extensão permanece.

Teste de árvore


Você também pode excluir arquivos por extensão usando encontrar junto com exec comandos, como explicarei abaixo.

Vamos ver um novo cenário com a mesma estrutura de diretório, mas arquivos diferentes.


A imagem acima mostra 4 arquivos de log e 3 arquivos sem extensão.

A sintaxe para remover arquivos por extensões usando -exec é o seguinte:

encontrar -tipo f -name '*.'-exec rm -f \;


Assim, para remover o .Arquivos de log da captura de tela anterior, eu corri o comando abaixo.

Encontre ~/testhint -Type f -name '*.log '-exec rm -f \;



A imagem acima mostra tudo .registro Os arquivos foram excluídos enquanto outros arquivos permaneceram.

O Xargs Comando oferece a mesma solução. A diferença entre Xargs e exec É que o EXEC executa a função RM toda vez que um arquivo corresponde à condição. O comando xargs executa o comando rm uma vez para todos os arquivos encontrados que correspondem à condição.

A sintaxe para remover todos os arquivos por extensão com o encontro e o XARGS é o seguinte:

encontrar -nome "*."-print0 | Xargs -0 RM


O novo cenário retratado na captura de tela abaixo mostra cinco .C arquivos em diferentes subdiretos e cinco arquivos sem o .c extensão.


Para remover tudo .c arquivos usando Xargs Eu corro o comando como mostrado abaixo.

encontrar . -nome "*.C "-print0 | Xargs -0 RM



Novamente, você pode ver que os arquivos de extensão selecionados foram excluídos com sucesso.

Excluindo todos os arquivos recursivamente com base em permissões

Vamos verificar o novo conteúdo do testhint diretório.

Existem quatro arquivos com permissões completas (File2, File3.C, arquivo6.C e FILE7).

Agora vamos supor que você queira encontrar e remover todos os arquivos com permissões completas para todos.

A sintaxe é a seguinte:

encontrar -Perm -print0 | XARGS -0 RM


Assim, para remover todos os arquivos com acesso total a todos os usuários, executo o comando abaixo.

Encontre ~/testhint -perm 777 -print0 | XARGS -0 RM


Como excluir arquivos recursivamente com base na modificação ou no tempo de criação

A última seção deste tutorial explica como excluir arquivos recursivamente pelo tempo de criação ou modificação.

A sintaxe é a seguinte:

Encontre ~/testhint -perm 777 -print0 | XARGS -0 RM


Se você deseja excluir arquivos criados ou modificados no último dia (últimas 24 horas), execute o seguinte comando, onde 1 é o número de dias, e o símbolo menos (-) especifica arquivos criados ou modificados antes do número definido de dias.

encontrar -Tipo F -Mtime -1 -Delete


Para remover os arquivos criados ou modificados antes de um dia, antes de 24 horas, basta substituir o símbolo menos por um símbolo mais.

encontrar -Tipo F -Mtime +1 -Delete

Conclusão

Como o Linux é um sistema operacional muito versátil e flexível, os usuários têm técnicas diferentes para obter o mesmo resultado. Todas as alternativas explicadas acima são válidas para quase todas as distribuições Linux. Alguns dos comandos são até úteis para alguns sistemas Unix. Como você pode ver, implementá -los é fácil e qualquer usuário do Linux pode fazê -lo independentemente do seu nível de conhecimento. Para excluir arquivos recursivamente de acordo com outras condições, verifique a página principal de cada comando descrito neste artigo.