De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Como usar o comando tar em conjunto com os comandos find e grep

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 27 de fevereiro de 2023

O comando find é usado para localizar arquivos ou diretórios com base em critérios específicos, enquanto o grep é usado para pesquisar conteúdo em arquivos. Quando usados em conjunto com o comando tar, é possível criar um arquivo compactado contendo apenas os arquivos que correspondem a um determinado critério de busca.

Criação do arquivo compactado

Para criar um arquivo compactado com base em um critério de busca, primeiro é necessário usar o comando find para localizar os arquivos e diretórios que correspondem a esse critério e, em seguida, usar o comando tar para criar o arquivo compactado.

Exemplo: criar um arquivo compactado contendo todos os arquivos cujo nome contém a palavra "documento" e estão localizados no diretório /home/user:

$ find /home/user -name "*documento*" | tar -czvf documentos.tar.gz -T -

Explicação:

Comando Descrição
find /home/user -name "*documento*" localiza todos os arquivos e diretórios que contêm a palavra "documento" no nome, no diretório /home/user.
| o pipe é usado para redirecionar a saída do comando find para o comando tar.
tar -czvf documentos.tar.gz -T - cria um arquivo compactado chamado documentos.tar.gz contendo todos os arquivos e diretórios encontrados pelo comando find. O parâmetro -T - é usado para ler a lista de arquivos a serem compactados da entrada padrão (que foi redirecionada para o comando find usando o pipe).

Extração do arquivo compactado

Para extrair os arquivos contidos em um arquivo compactado criado dessa forma, basta usar o comando tar com o parâmetro -xvf seguido do nome do arquivo compactado.

Exemplo: extrair os arquivos do arquivo compactado documentos.tar.gz no diretório /tmp:

$ tar -xvf documentos.tar.gz -C /tmp

Explicação:

Comando Descrição
tar -xvf documentos.tar.gz extrai os arquivos contidos no arquivo compactado documentos.tar.gz.
-C /tmp especifica que os arquivos devem ser extraídos no diretório /tmp.

Suponha que você queira criar um arquivo compactado contendo todos os arquivos com a extensão .txt dentro do diretório atual e seus subdiretórios, mas excluindo aqueles que contêm a palavra confidencial no conteúdo. Você pode usar o comando find para localizar todos os arquivos com a extensão .txt e, em seguida, usar o grep para filtrar aqueles que não contêm a palavra confidencial. Por fim, você pode usar o tar para criar um arquivo compactado com os arquivos restantes.

O comando ficaria assim:

$ find . -type f -name "*.txt" -exec grep -L "confidencial" {} \; | xargs tar -czvf arquivos_texto.tar.gz

Neste comando, o find procura por todos os arquivos com extensão .txt dentro do diretório atual e seus subdiretórios. Em seguida, o comando exec executa o grep em cada um dos arquivos encontrados, filtrando aqueles que não contêm a palavra confidencial. O grep usa a opção -L para listar apenas os nomes dos arquivos que não contêm a palavra confidencial. O resultado é então enviado para o xargs, que cria a lista de arquivos que serão compactados pelo tar. Por fim, o tar é usado para criar o arquivo compactado arquivos_texto.tar.gz com os arquivos restantes.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida