script [RESOLVIDO]

1. script [RESOLVIDO]

Franklin
FRANK_

(usa Outra)

Enviado em 13/02/2016 - 16:57h

como faço para escrever comandos ou um script para listar arquivos maiores que um determinado tamanho (recebido em uma variável) no diretório atual e seus subdiretórios (recursivamente)


  


2. Re: script [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 13/02/2016 - 23:13h

Olá,

É trabalho de faculdade?

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


3. Re: script [RESOLVIDO]

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 14/02/2016 - 00:02h

Estudando.

https://www.youtube.com/playlist?list=PLucm8g_ezqNp92MmkF9p_cj4yhT-fCTl7

Olha a partir do vídeo 97 em diante, já ajuda um pouco.
______________________
Macaco gosta de banana
----------------------



4. Re: script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/02/2016 - 00:07h

ls -l | awk '{ if($5>1000) print $0; }'

Se você não conhecer os comandos, adiantará m&rd@ alguma.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



5. Re: script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/02/2016 - 03:11h

FRANK_ escreveu:

como faço para escrever comandos ou um script para listar arquivos maiores que um determinado tamanho (recebido em uma variável) no diretório atual e seus subdiretórios (recursivamente)

_____________________________________________________________
O método mais rápido, menor comando, é o do listeiro_037, só faltou o RECURSIVO . Rsrsrsr
ls -lR | awk '{ if($5>1000) print $0; }'

Tentarei ser bastante didático, um passo a passo para iniciante.

Vamos lá!
Aqui no VOL tem muito material de ótima qualidade, recomendo o citado abaixo, por ser um resumão.
Leia com atenção:
http://goo.gl/DRZwZ7
Lista tudo detalhada e recursivamente.
ls -lR
Mas não é isso que deseja . . .
Vamos filtrar a saída, e obter somente arquivos . . . (não é necessário, somente ilustrativo)
grep -E '^-..' => Mostra somente os arquivos que iniciam com -, qquer coisa, qquer coisa
ls -lR | grep -E '^-..'
Tem muito espaço nessa listagem....
Um SED, resolve isso. Esse comando troca sequencia de espaços por um espaço
Também tem muita informação, vamos "pegar" somente TAMANHO e NOME DO ARQUIVO (não é necessário, somente ilustrativo)
cut -d " " -f5,9 => Mostra somente o campo 5 e o campo 9
ls -lR | grep -E '^-..' |sed 's/[ ]\+/ /g' |cut -d " " -f5,9 >> ARQUIVOS.txt 


Agora, vamos ler linha por linha, comparar o valor do CAMPO SIZE com SIZEDEF e mostrar na TELA o que INTERESSA.

DEFINE o TAMANHO REQUERIDO
SIZEDEF="1000"
while IFS=" " read -r SIZE NAME ;do
(($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt

Script:


#!/bin/bash
#DEFINE SIZE
SIZEDEF="100000000"

ls -lR | grep -E '^-..' | sed 's/[ ]\+/ /g' |cut -d " " -f5,9 >> ARQUIVOS.txt
echo -e "\nARQUIVOS MAIORES QUE $SIZEDEF\n"
while IFS=" " read -r SIZE NAME ;do
(($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt


Traduzindo:
Enquanto o ( Internal Field Separator = IFS) separador de campos for " " , Faça:
Atribua os valores as variáveis => read -r SIZE NAME
Se TAMANHO do ARQUIVO for MAIOR QUE TAMANHO DEFINIDO , mostre na tela => (($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt => busca as informações em ARQUIVOS.txt, finaliza o laço.

Isso é o básico!

Att.:
Marcelo








6. Re: script

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/02/2016 - 03:17h

Eu ia deixar ele quebrar um pouco a cabeça prá encontrar o que faltaria prá completar o trabalho.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



7. Re: script [RESOLVIDO]

Franklin
FRANK_

(usa Outra)

Enviado em 14/02/2016 - 16:24h

tonyhts escreveu:

Olá,

É trabalho de faculdade?

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


lista de exercícios da faculdade.


8. Re: script

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 14/02/2016 - 16:36h

FRANK_ escreveu:
lista de exercícios da faculdade.


Olá, Frank.

Neste caso, não podemos te entregar a solução pronta pois estaríamos te prejudicando ao invés de te ajudando. O certo é pesquisar, entender o que o comando faz, testar, quebrar a cabeça, pedir ajuda aqui no fórum e tals. Pra se chegar a um raciocínio lógico funcional, vc vai exercitar bastante e ao mesmo tempo aprender sobre outras possibilidades ;)

A galera já te respondeu o "como", agora é so ler, entender e aplicar o que o Mestre @msoliver postou e ser feliz.


Abs,

Uma vida sem desafios não vale a pena ser vivida.
Sócrates

---


9. Re: script [RESOLVIDO]

Franklin
FRANK_

(usa Outra)

Enviado em 14/02/2016 - 18:09h

msoliver escreveu:

FRANK_ escreveu:

como faço para escrever comandos ou um script para listar arquivos maiores que um determinado tamanho (recebido em uma variável) no diretório atual e seus subdiretórios (recursivamente)

_____________________________________________________________
O método mais rápido, menor comando, é o do listeiro_037, só faltou o RECURSIVO . Rsrsrsr
ls -lR | awk '{ if($5>1000) print $0; }'

Tentarei ser bastante didático, um passo a passo para iniciante.

Vamos lá!
Aqui no VOL tem muito material de ótima qualidade, recomendo o citado abaixo, por ser um resumão.
Leia com atenção:
http://goo.gl/DRZwZ7
Lista tudo detalhada e recursivamente.
ls -lR
Mas não é isso que deseja . . .
Vamos filtrar a saída, e obter somente arquivos . . . (não é necessário, somente ilustrativo)
grep -E '^-..' => Mostra somente os arquivos que iniciam com -, qquer coisa, qquer coisa
ls -lR | grep -E '^-..'
Tem muito espaço nessa listagem....
Um SED, resolve isso. Esse comando troca sequencia de espaços por um espaço
Também tem muita informação, vamos "pegar" somente TAMANHO e NOME DO ARQUIVO (não é necessário, somente ilustrativo)
cut -d " " -f5,9 => Mostra somente o campo 5 e o campo 9
ls -lR | grep -E '^-..' |sed 's/[ ]\+/ /g' |cut -d " " -f5,9 >> ARQUIVOS.txt 


Agora, vamos ler linha por linha, comparar o valor do CAMPO SIZE com SIZEDEF e mostrar na TELA o que INTERESSA.

DEFINE o TAMANHO REQUERIDO
SIZEDEF="1000"
while IFS=" " read -r SIZE NAME ;do
(($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt

Script:


#!/bin/bash
#DEFINE SIZE
SIZEDEF="100000000"

ls -lR | grep -E '^-..' | sed 's/[ ]\+/ /g' |cut -d " " -f5,9 >> ARQUIVOS.txt
echo -e "\nARQUIVOS MAIORES QUE $SIZEDEF\n"
while IFS=" " read -r SIZE NAME ;do
(($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt


Traduzindo:
Enquanto o ( Internal Field Separator = IFS) separador de campos for " " , Faça:
Atribua os valores as variáveis => read -r SIZE NAME
Se TAMANHO do ARQUIVO for MAIOR QUE TAMANHO DEFINIDO , mostre na tela => (($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt => busca as informações em ARQUIVOS.txt, finaliza o laço.

Isso é o básico!

Att.:
Marcelo







Obrigado Marcelo,
é um exercício da lista que não estava conseguindo fazer, me ajudou bastante.


10. Re: script [RESOLVIDO]

Franklin
FRANK_

(usa Outra)

Enviado em 14/02/2016 - 22:03h

msoliver escreveu:

FRANK_ escreveu:

como faço para escrever comandos ou um script para listar arquivos maiores que um determinado tamanho (recebido em uma variável) no diretório atual e seus subdiretórios (recursivamente)

_____________________________________________________________
O método mais rápido, menor comando, é o do listeiro_037, só faltou o RECURSIVO . Rsrsrsr
ls -lR | awk '{ if($5>1000) print $0; }'

Tentarei ser bastante didático, um passo a passo para iniciante.

Vamos lá!
Aqui no VOL tem muito material de ótima qualidade, recomendo o citado abaixo, por ser um resumão.
Leia com atenção:
http://goo.gl/DRZwZ7
Lista tudo detalhada e recursivamente.
ls -lR
Mas não é isso que deseja . . .
Vamos filtrar a saída, e obter somente arquivos . . . (não é necessário, somente ilustrativo)
grep -E '^-..' => Mostra somente os arquivos que iniciam com -, qquer coisa, qquer coisa
ls -lR | grep -E '^-..'
Tem muito espaço nessa listagem....
Um SED, resolve isso. Esse comando troca sequencia de espaços por um espaço
Também tem muita informação, vamos "pegar" somente TAMANHO e NOME DO ARQUIVO (não é necessário, somente ilustrativo)
cut -d " " -f5,9 => Mostra somente o campo 5 e o campo 9
ls -lR | grep -E '^-..' |sed 's/[ ]\+/ /g' |cut -d " " -f5,9 >> ARQUIVOS.txt 


Agora, vamos ler linha por linha, comparar o valor do CAMPO SIZE com SIZEDEF e mostrar na TELA o que INTERESSA.

DEFINE o TAMANHO REQUERIDO
SIZEDEF="1000"
while IFS=" " read -r SIZE NAME ;do
(($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt

Script:


#!/bin/bash
#DEFINE SIZE
SIZEDEF="100000000"

ls -lR | grep -E '^-..' | sed 's/[ ]\+/ /g' |cut -d " " -f5,9 >> ARQUIVOS.txt
echo -e "\nARQUIVOS MAIORES QUE $SIZEDEF\n"
while IFS=" " read -r SIZE NAME ;do
(($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt


Traduzindo:
Enquanto o ( Internal Field Separator = IFS) separador de campos for " " , Faça:
Atribua os valores as variáveis => read -r SIZE NAME
Se TAMANHO do ARQUIVO for MAIOR QUE TAMANHO DEFINIDO , mostre na tela => (($SIZE > $SIZEDEF)) && echo -e "$NAME:$SIZE"
done < ARQUIVOS.txt => busca as informações em ARQUIVOS.txt, finaliza o laço.

Isso é o básico!

Att.:
Marcelo






Marcelo.

Muito obrigado me ajudou muito, é de uma lista de exercícios da faculdade. ainda estou apanhando, sua explicação passo a passo detalhadamente me ajudou bastante.
abraços.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts