# Operações com arquivos no shell

##### Excluindo arquivos com mais de 90 dias:

`find pasta -mtime +90 -type f -exec rm -f {} \;`

(altere o +90 para -90 para pegar arquivos com menos de 90 dias)

#### Excluindo arquivos com uma determinada extensão:

`find pasta -type f -name *.sql -exec rm -f {} \;`

##### Excluindo pastas vazias:  
`find pasta -type d -empty -exec rm -Rf {} \;`

##### Excluindo arquivos vazios:  
`find pasta -type f -empty -exec rm -f {} \;`

Para listar os arquivos ao invés de excluir, troque o `rm -f` por `ls -l`.

##### Extraindo arquivos existentes em sub-pastas:

` for file in `find *`; do`  
`gunzip "${file}" ; done`

##### Mesclando vários arquivos em um só:

`find . -type f -name 'access-*.log' -exec cat {} + >> output.file`

##### Gerando log com o goaccess:

`goaccess output.log -a -o log.html`

##### Substituindo texto em um arquivo

`sed -i 's/procurar/substituir/g' arquivo.txt`

##### Dividindo um arquivo em partes:

Dividir o arquivo lista.txt em partes de 1000 linhas cada.  
Cada parte do arquivo será chamada parte1.txt, parte2.txt etc.

`split -l 1000 lista.txt parte`

##### Extrair um arquivo tgz:

`tar -zxvf arquivo.tgz`

##### Extrair um arquivo específico que está dentro do tgz:

`tar -zxvf arquivo.tgz arquivo_interno.txt`

##### Comprimindo uma pasta/arquivo no formato tgz:

`tar -cvpzf arquivo.tgz pasta`

##### Caso o arquivo seja .tar, basta tirar o z do comando:

`tar -xvf arquivo.tar`