Site sobre software livre, cultura, arte, gimp, inkscape, wallpapers, vim, firefox, python, e-books, algoritmos, openoffice, ubuntu, debian, gnome, inkscape, bash, shell script, música, arte, mpb, dicas em geral, Geopolítica, politica, brasil, blogsfera, ativismo, rock, english
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
É 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
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ê.
Material para uma aula que vou ministrar
Versão odt no mediafire:
http://www.mediafire.com/?zwcze4tn2nz
Forçando a atualização do firefox facinho
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!
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?
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
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
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:
4º Apagar regularmente miniaturas geradas pelo gnome
127.0.0.1 localhost nome-do-computador
127.0.1.1 nome-do-computador
5º Utilize um tema mais leve
find ~/.thumbnails -type f -atime +7 -exec rm {} \;
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ê
~/.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/
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
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
|
|
| Participe do grupo linux-cookbook |
| Visitar este grupo |