Jump to content
Sign in to follow this  
dario1133

shell script em linux

Recommended Posts

dario1133

boa noite

como fazer um script para mostrar todos os ficheiros que existem numa pasta "pasta1" mas os ficheiros tem de ser do tipo ".txt" e tem de apresentar um numero no seu nome.. ex: ficheiro1.txt.....

alguma dica???

Share this post


Link to post
Share on other sites
IceBrain

#!/bin/bash
ls "$1" | grep -e ".*[0-9].*\.txt"

Gravas como um ficheiro qualquer (p.e: listn) e depois é só fazer:

./listn nome_da_pasta


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
dario1133

o codigo nao ta a funcionar.. tipo se eu tiver a pasta /etc/ que contem varios ficheiros, eu quero que me apresente apenas os .txt e que contenham um numero no nome.. como faço??

Share this post


Link to post
Share on other sites
IceBrain

Se o script estiver na numa pasta /home/dario/scripts, por exemplo, fazes:

/home/dario/scripts/listn   /etc


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
dario1133

nao sei se etendi.

será que fica assim...

#!/bin/bash

/home/desktop/documentos/etc ; ir até pasta etc

ls "$1" | grep -e ".*[0-9].*\.txt" ; procurar e mostrar todos os ficheiros do tipo txt com nº no seu nome

depois gravo este script (script.sh) e executo (. script.sh)

será que funciona?

Share this post


Link to post
Share on other sites
IceBrain

Não, é suposto gravar no script o que te dei no meu primeiro post:

#!/bin/bash
ls "$1" | grep -e ".*[0-9].*\.txt"

E depois quando executas o script, passas-lhe a pasta:

./script.sh  /etc

Assim o mesmo script funciona para qualquer pasta que lhe passes.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
dario1133

na parte final ainda me faz confusão.

se eu guardar o script.sh no Desktop, e a minha pasta etc por exemplo ta nos meus documentos, ao executar o script faço:

./script.sh  /etc

ou

./script.sh  /Dektop/documentos/etc

no exemplo de cima tando eu no desktop ele consegue aceder a outras pasta se nao as que tao também no Desktop?

Share this post


Link to post
Share on other sites
IceBrain

Sim, ele consegue aceder a qualquer pasta, mas se a pasta está numa pasta do Desktop, tens que a indicar:

./script.sh /home/dario/Desktop/documentos/etc


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
pedrotuga

na parte final ainda me faz confusão.

se eu guardar o script.sh no Desktop, e a minha pasta etc por exemplo ta nos meus documentos, ao executar o script faço:

./script.sh  /etc

ou

./script.sh  /Dektop/documentos/etc

no exemplo de cima tando eu no desktop ele consegue aceder a outras pasta se nao as que tao também no Desktop?

Se estiveres na pasta /home/dario/Desktop e o script estiver lá, podes escrever apenas

./script.sh /etc

se estiveres na pasta /etc terás que especificar a path do script

/home/dario/Desktop/script.sh /etc

Uma forma de contornares isso é colocares o script numa pasta que esteja na variável de ambiente $PATH.

Eu tenho uma pasta para scripts dentro da minha pasta de utilizador, depois no meu ficheiro .bashrc tenho isto no fim:

PATH=~/myscripts:$PATH

a partir daí para correr o script, basta escrever

script.sh /etc

e funcionará, estando tu na pasta que estiveres

EDIT:

icebrain, penso que ele se está a referir à pasta do sistema /etc e não a /home/dario/Desktop/documentos/etc

Share this post


Link to post
Share on other sites
dario1133

eu tou na pasta /home/ubuntu/Desktop, e é aqui que tenho o meu script de nome 1.sh, o script é:

#!/bin/bash

ls "$1" | grep -e ".*[0-9].*\.txt"

quero aceder à pasta /etc que se encontra algures no sistema, se executar:

. 1.sh  /etc

assim consigo executar bem o meu programa??

eu ja experimentei assim e nao deu...

Share this post


Link to post
Share on other sites
dario1133

ja experimentei nao da..

tenho o script (1.sh) no desktop

e se executar assim??:

./ 1.sh /etc/home/ubuntu/Desktop

????

Share this post


Link to post
Share on other sites
Baderous

A pasta etc é uma pasta que está debaixo da root (/), por isso a menos que tenhas lá criado as subpastas /home/ubuntu/Desktop, isso não vai funcionar.

Dá algum erro quando tentas executar como te dissemos?

Share this post


Link to post
Share on other sites
dario1133

ja da pessoal brigado..

ao executar:

. 1.sh /etc/  # assim dá

./1.sh /etc/    # assim nao dá

brigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.