Mostrando postagens com marcador find. Mostrar todas as postagens
Mostrando postagens com marcador find. Mostrar todas as postagens

como copiar uma estrutura de pastas sem os arquivos?


(cd /home/user/source/; find -type d -print0) | xargs -0 mkdir -p


Sobre os erros de português aqui no site agradeço ao Hélio Nunes, estou estudando
inglês para dentro de algum tempo postar nesta lingua, assim vou ter a desculpa se escrever algo errado.

O Hélio Nunes me alertou sobre o erro ao colocar extrutura ao invés de estrutura, confesso que este blog já postou muitos erros de português, e não somente nele, apesar de me considerar rasoavelmente rasoavelmente articulado volta e meia cometo esses erros, não sou assim tão bom na nossa lingua. Mas considerando que mantenho este blog sozinho e por vezes as postagens são rápidas acho que a quantidade de erros é até baixa.

É curioso como no parágrafo acima, ao citar um erro, cometi outro, tento não errar, mas quando erro, gosto de assumir os erros, de aprender com eles. Obrigado a todos que postam críticas, sugestões, incluindo as correções no uso da lingua portuguesa.

Apagando arquivos de hoje de uma pasta

Sei que a maioria dos leitores do blog já sabem usar o find com todas as suas firulas, mas vez por outra devemos dar uma colher de chá para os novatos, não é mesmo?

find ./ -ctime -1 | xargs rm -rf


Lembre-se que este comando é recursivo, caso não deseje este comportamento faça assim

find ./ -maxdepth 1 -ctime -1

No caso acima não estou apagando mas apenas listando o que foi criado hoje
e tão somente na pasta atual, a opção "-maxdepth" controla o nível de profundidade sobre o qual o find vai atuar.

Obs: se você omitir o caminho de buscas o find irá buscar na pasta atual, outra coisa, se não estiver lembrando como se escreve uma opção o find tem um "table complete" interno, ou seja, se você digitar -max[tab] elel digita o restante pra você.

Forçando a atualização do firefox facinho

Quando abrimos o firefox vemos que no menu de ajuda as atualizações estão bloqueadas, a opção do menu fica em cinza claro, veja a imagem:

Para resolver isto abra o firefox (no gnome) assim:

gksu firefox

Aproveito a dica para limpara o cache do firefox
  • feche o firefox
  • execute este comando:


find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;

Um brinde

Find + Xargs de novo!

adicionando extensão a arquivos
Eu tinha um monte de arquivos sem extensão e queria colocar
no final txt, segue a solução.


find ./ -maxdepth 1 -type f -print0 | xargs -0 -i mv ./{} ./{}.txt


A vantagem desta abordagem é que o find entrega uma lista pronta
para o xargs, assim um arquivo já renomeado não pode sofrer novamente
a alteração em questão. Outra vantagem é que fica tudo em uma mísera linha.

Solução usando o rename

rename 's/$/.txt/g' *

O cifrão é uma expressão regular que significa final do padrão buscado!

Como localizar 'arquivos' que não obedeçam a um padrão?

Essa pergunta surge no seguinte contexto:

Você baixou por exemplo a biblioteca de imagens openclipart
que tem uma versão 'full', nesta versão além dos arquivos svg
vem também arquivos 'png', 'txt', 'pdf' entre outros, eu queria
fazer um cd para o Natal Livre 2008 e para diminuir o tamamnho
precisava deixar apenas os arquivso com extensão 'svg', fiz assim:

find ./clipart -type f -iregex '.*\.[^svg]$' | xargs -rm f

O find está buscando na pasta clipart por arquivos
'-type f' que obedeçam à expressão regular '.*\.[^svg]$'

O significado da expressão regular por sua vez é:

.* ......... qualquer caractere em qualquer quantidade
\. ......... seguido de um ponto
[^svg] ..... não seguido de svg (negação)
$ ........... seguido de final de linha

O xargs pega blocos de tamanho aceitáveis para a memória
evitando estouro de pilha e entrega para o comando de remoção
'rm'

A biblioteca openclipart tem muitas subpastas e agora eu
queria saber a quantidade de arquivos únicos

find ./clipart/ -type f -iregex ".*\.svg$" | xargs -i basename ./{} | sort | uniq | wc -l

Soluções sempre à mão

Vez por outra posto dicas da lista shell script aqui, é que nem todo mundo acompanha o RSS da lista, algém pode estar precisando desta dica.

Procurar todos os mp3 e listar o espaço ocupado

find . -name \*.mp3 -print0|xargs -0 du -ch

Referência:
http://br.groups.yahoo.com/group/shell-script/message/27388

Deixando o ubuntu um pouco mais leve

Reuno aqui algumas dicas para deixar o ubuntu um pouco mais leve

1º Personalizar o terminal para abrir o xterm
Veja aqui como personalizar o xterm

2º Ativar recursos reduzidos

#Ativando recursos reduzidos
gconftool-2 -t bool -s '/apps/metacity/general/reduced_resources' true

#Ativando Tecnologias assistivas (se desabilitou animações é bom usar)
gconftool-2 -t bool -s '/desktop/gnome/interface/accessibility' true

3º Usar o epiphany ao invés do firefox
   sudo apt-get install epiphany


Dica: A configuração do proxy do epiphany (se necessário) é feita em Sistema >> Preferências >> Proxy de Rede

Devido a um bug no Gnome, que faz com que a interface de loopback (lo) não seja reconhecida por alguns programas (atualmente 127.0.1.1 está sendo usado para o nome da máquina, ao invés do antigo 127.0.0.1, e alguns programas não estavam adaptados a isso), algumas coisas estavam mais devagar do que deveriam estar.

Para corrigir é simples. Na verdade, um tanto quanto bobo. Basta editar o arquivo /etc/hosts:

sudo gedit /etc/hosts

Você deve ver algo como:

127.0.0.1 localhost
127.0.1.1 nome-do-computador

Basta adicionar o nome do seu computador em frente ao localhost, ficando assim:

127.0.0.1 localhost nome-do-computador
127.0.1.1 nome-do-computador

4º Apagar regularmente miniaturas geradas pelo gnome

find ~/.thumbnails -type f -atime +7 -exec rm {} \;
5º Utilize um tema mais leve


gconftool-2 --type=string --set /apps/metacity/general/theme Simple
gconftool-2 --type=string --set /apps/metacity/general/theme gnome


Referências:
* http://lucasarruda.wordpress.com
* tuxvermelho

Fazendo o bash + vim trabalharem por você

Por diversas vezes tive que editar o meu arquivo:

~/.mozilla/firefox/xxxxxx.default/user.js

Nele guardamos as configurações do firefox. Acontece que mantenho outra cópia do mesmo e quando fazia uma busca:


find ~/ -iname user.js


ele me retornava:

/home/sergio/docs/conf/firefox/user.js
/home/sergio/.mozilla/firefox/ojv6a8vr.default/user.js



Usando o grep posso dizer:

find ~/ -iname user.js | grep default


e finalmente colocar este comando numa variável e chamar com o vim:

vim $(find ~/ -iname user.js | grep default)

Comandos inteligentes

Exemplos de comandos que usam a tecnologia "ninja":

Exemplo 1 - quero editar o meu arquivo user.js (que contém as preferências do firefox) mas não lembro onde está, apenas sei que está numa pasta oculta chamada .mozilla

Solução:

vim $(find ~/.mozilla -iname user.js)

antes de abrir o arquivo pelo vim, o sistema cria uma variável que contém a localização do arquivo e passa como parâmetro para o editor vim.

Exemplo 2 - Quero somar os números de 1 a 100

Solução:
echo "a soma de 1 a 100 é $(seq 1 100 | paste -sd+ | bc)"

O comando echo mostra textos e variáveis na tela, no caso o trecho após o cifrão passa a ser uma variável e será interpretado antes do comando echo, ou seja o comando echo vai receber o resultado abaixo:

5050

O comando seq gera a sequência de 1 a 100 e repassa através de um pipe "encanamento" os 100 números para o comando paste, o mesmo usando o parâmetro "-sd+" coloca um sinal de mais "+" entre cada um dos valores, por fim o comando bc "calculadora de linha de comando" faz a soma dos valores recebidos

Exemplo 3 - Quero criar uma estrutura de pastas rapidinho

Solução

mkdir -p {tmp/,docs/{img/{wallpapers/,icons/,fotos/},textos/{man/,artigos/}}}

No comando acima cada par de chaves determina o conteúdo das pastas, não perca a conta senão dá erro!

Exemplo 4 - Quero entrar numa pasta se existir ou cria-la e então entrar na mesma

Solução

[ -d pasta ] || mkdir pasta ; cd pasta

Temos na verdade dois comandos separados por ponto e vírgula

  • [ -d pasta ] || mkdir pasta
  • cd pasta
O primeiro comando diz:
Querido sistema, se pasta existir [ -d pasta ]
ou --> "||" você fizer o favor de criar para min mkdir pasta
entre na mesma "; cd pasta"

linux-cookbook

Grupos do Google
Participe do grupo linux-cookbook
E-mail:
Visitar este grupo