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 é:

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 é:

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.

Deixe um comentário