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