Duas pequenas soluções usando linha de comandos
Bom, este post marca o início de uma série com pequenas soluções interessantes usando a linha de comandos, uma quase "bala de prata" pra quem usa Linux e OS X macOS.
Como deletar vários sub-diretórios de uma só vez
Eu precisei fazer isso quando queria retirar os sub-diretórios do svn de uma pasta, ou seja, "desversionar" um projeto.
Para clarificar, um projeto versionado pelo svn segue uma estrutura de diretórios parecida com essa:
./.svn
./app/.svn
./app/models/.svn
./config/.svn
E o comando mágico para remover todos os diretórios é:
bash
find -name ".svn" -type d -exec rm -rvf {} \;
Explicando o comando: procure por tudo que tiver o nome
.svn
e que for um diretório e quando encontrar, execute um comando rm -rvf
nele.Os parâmetros do
rm
significam:r
- recursive (apagar sub-diretórios recursivamente)v
- verbose (exibir as pastas que estão sendo apagadas)f
- force (não pedir confirmação para apagar)
Como extrair uma parte de um arquivo grande e salvá-lo em outro arquivo
Eu precisei fazer isso porque o arquivo do qual seria extraído uma parte era grande demais (1.5 GB). Ambos os editores Vim e Gedit tiveram dificuldade pra abrir um arquivo de texto tão grande.
Vamos supor então que o tal arquivo se chame
banco.dump
, que ele tenha 20 milhões de linhas e que eu precise extraír o conteúdo das linhas 12.000.000
até a linha 12.000.500
para um outro arquivo que vou chamar de novo.txt
.O comando para fazer isso é:
bash
cat -n banco.dump | head -n 12000500 | tail -n 500 > novo.txt
Explicando: o parâmetro passado no
head
é a linha final (12000500
) do range desejado.
O parâmetro 500
passado como parâmetro do comando tail
representa quantas linhas "para trás" ele deve pegar. Para finalizar, jogamos tudo dentro do arquivo novo.txt
.