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

função para mostar os maiores arquivos do seu sistema

Coloque no seu ~/bashrc


biggest (){
du -k * | sort -nr | cut -f2 | head -20 | xargs -d "\n" du -sh
}

Obs: Agradecimentos aos membros da lista de shell script do yahoo:
http://br.groups.yahoo.com/group/shell-script/message/29808

Agora vamos explicar o comando procê nun ficar tonto:

du -k ...... exibe em múltiplos de 1000
sort -nr ... ordena numericamente em ordem inversa
cut -f2 ... pega so os nomes
head ...... exibe os 10 maiores
xargs -d "\n" entrega a lista para o xargs indicando quebra de linha como separador
du -sh ..... faz o calculo do tamanho


Outra versão que ainda vou ter que analizar

du | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'


Usando esta segunda versão o resultado deve ser filtrado com "head -valor"

biggest () {
du | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'
}


Referência command-line-fu

Leia todos os posts sobre shell script:
http://vivaotux.blogspot.com/search/label/bash

Como funciona o awk

Bem, este post veio por causa deste comentário.

De forma simples o awk trata textos e streams assim:

awk [padrão] ação

Observe que o padrão pode ser omitido, caso queira usar o padrão pode usar expressões regulares

Vamos aos exemplos:

echo "um dois" | awk '{print $2}'

omitimos o padrão, ou seja pedimos apenas a ação, no caso imprimir a segunda coluna

echo "um dois" | awk '{print $2, $1}'

Acima pedimos ao awk que invertesse a posição das colunas

awk -F: '/sergio/ {print $1}' /etc/group

Acima algo novo (o separador de campos padrão do awk é o espaço) para indicar
um separador diferente usamos '-F' seguido do separador. Estamos pegando o campo 1 do
arquivo /etc/group, estamos pedindo que imprima somente as linhas que contém o padrão sergio. /sergio/

Para imprimir somente as linhas pares

seq 10 | awk '$1 % 2 == 0 {print}'

Como pegar o endereço IP?

ifconfig eth0 | awk '/inet addr/ {print $2}'

Se desejar limpar mais a saida pode usar o cut

Como pegar usuários com GID acima de 1000

awk -F: '$4 > 1000 {print}' /etc/passwd

Acima estou dizendo ao awk que o separador de campos é dois pontos e que
se o campo 4 for maior que 1000 o mesmo deve ser impresso

Como pegar a segunda coluna da quinta linha?
Considrando que o arquivo seja separado por espaços, faça:

awk 'NR==5 {print $2}' arquivo

Algon novo aqui --> NR significa número do registro, para o awk cada linha
é um registro, portanto 5ª linha é igua a NR==5

procura e mostra linhas com o terceiro campo igual a "peter" ou que contenham o string "marie":

cat nomedoarquivo | awk '$3 == "peter" || $3 ~ /marie/'

Variáveis do awk
NR Contém o número do registro atual
NF contém o número de registros por campo
FS indica o separador de campos
RS indica o separador de registros
OFS indica o separador de campo do arquivo de saida
ORS indica o separador de registros do arquivo de saida

indicando o separador de saída

awk -F: '{OFS="-"}{print $1,$6}' /etc/passwd

Imprimir o nome dos grupos que tiverem como membro o usuário sergio

awk -F":" '$4 ~ /sergio/ {print $1}' /etc/group

Imprimir cada registro (linha) numerada "NR" usando Número do Registro

awk -F":" '{ print NR " " $0 }' /etc/passwd

linux-cookbook

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