Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

/bin/bash: Razmak u nazivima fajlova i liste

[es] :: Skript jezici :: /bin/bash: Razmak u nazivima fajlova i liste

[ Pregleda: 3889 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Not now, John!

Član broj: 231
Poruke: 1318
*.teol.net.



+4 Profil

icon /bin/bash: Razmak u nazivima fajlova i liste21.06.2005. u 18:21 - pre 228 meseci
Kako kreirati listu fajlova u nekom folderu da for petlja uzima u obzir fajl po fajl, bez obzira što u nazivima nekih fajlova postoji razmak?

Ovaj kod
Code:
files=`ls`
for file in $files; do
  echo "-> $file"
done

radi kada nema razmaka u nazivima fajlova, ali ne radi u suprotnom slučaju.
Ako imam sljedeće fajlove:
Code:
fajl1.jpg
fajl2.jpg
moja fotka.jpg
fajl4.jpg

na izlazu dobijam:
Code:
-> fajl1.jpg
-> fajl2.jpg
-> moja
-> fotka.jpg
-> fajl4.jpg

Probao sam sve moguće varijacije komade ls, sa navodnicima, escape sekvencama i sl. i ništa mi nije pomoglo.

Unaprijed hvala.
"I'd take the awe of understanding over the awe of ignorance any day."
- Douglas Adams
 
Odgovor na temu

Alef
Viktor Kerkez
Novi Sad

Član broj: 505
Poruke: 188
*.dialup.neobee.net.



Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste21.06.2005. u 19:45 - pre 228 meseci
Code:

for i in *
do echo "$i"
done
 
Odgovor na temu

Not now, John!

Član broj: 231
Poruke: 1318
*.teol.net.



+4 Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste21.06.2005. u 19:56 - pre 228 meseci
Hvala prijatelju. Nije kako sam zamišljao, ali će mi odraditi posao.
Pozdrav.
"I'd take the awe of understanding over the awe of ignorance any day."
- Douglas Adams
 
Odgovor na temu

Not now, John!

Član broj: 231
Poruke: 1318
*.teol.net.



+4 Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste21.06.2005. u 20:06 - pre 228 meseci
Hm... ipak neće. Treba da sortiram listu fajlova u nekom folderu prema posljednjem vremenu izmjene, da bih ih preimenovao u rastućem redoslijedu...

Ima li rješenje za to?
"I'd take the awe of understanding over the awe of ignorance any day."
- Douglas Adams
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
*.montgomery.com.

ICQ: 60630914


+1 Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste21.06.2005. u 20:20 - pre 228 meseci
mislim da ti je dovoljno:

Code:

files=`ls`
for file in "$files"; do
  echo "-> $file"
done


mrzim da dajem LDP linkove, ali ipak:

http://www.tldp.org/LDP/abs/html/

ako zamislis loop-unrolling, skontaces brzo u cemu je bila greska.
 
Odgovor na temu

Not now, John!

Član broj: 231
Poruke: 1318
*.teol.net.



+4 Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste22.06.2005. u 12:22 - pre 228 meseci
Citat:
caboom: mislim da ti je dovoljno:

Code:

files=`ls`
for file in "$files"; do
  echo "-> $file"
done


mrzim da dajem LDP linkove, ali ipak:

http://www.tldp.org/LDP/abs/html/

ako zamislis loop-unrolling, skontaces brzo u cemu je bila greska.

Gornji kod definitivno ne radi, jer ako stavim $files pod navodnike u for petlji onda $file postane jednako $files, tj. for petlja, uopšte ne ide liniju po liniju. Ako ne stavim navodnike onda smetaju razmaci...

Tu knjigu imam na svom računaru, ali nisam imao vremena da čitam čitavu knjigu zbog jednog problema, jer u sadržaju se ne spominje nešto što bi moglo da riješi ovaj problem.

Ipak, na početku knjige sam našao jednu funkciju koja je riješila problem...

Evo koda:
Code:

processfilelist () {
  while read line; do
    echo "-> $line"
  done
}

files=`ls -1tr`
echo "$files" | processfilelist

"I'd take the awe of understanding over the awe of ignorance any day."
- Douglas Adams
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
*.montgomery.com.

ICQ: 60630914


+1 Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste22.06.2005. u 19:53 - pre 228 meseci
tacno... sorry, nisam proverio
 
Odgovor na temu

random
Vladimir Vrzić
Beograd

Član broj: 85
Poruke: 3866
*.eth-wifi.verat.net.

Sajt: www.last.fm/user/vrza


+4 Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste04.07.2005. u 16:39 - pre 228 meseci
Not Now, John!, to nije rešenje problema, već workaround.

Imena fajlova sa spejsovima su potpuni seks u shell skriptingu. Ovo sa for petljom je još jednostavno (eto, recimo možeš da je zameniš while read petljom).

xargs srećom ima mogućnost da se definiše neki drugi separator, pa ova mogućnost ponekad može biti korisna, kao što ovaj lik pokazuje ovde:

http://hacks.oreilly.com/pub/h/7

Pre neko veče sam baš pisao jedan shell skriptić, i naišao na sledeću muku sa spejsovima.

Recimo da sam imao nešto ovako

SUBTITLE="/Neka Putanja/Neki Film/Neki Film Titl.sub"

Apsolutno ne znam kako da vrednost ove promenljive strpam u drugu promenljivu, a da spejsovi ostanu escape-ovani? Ako pokušam sa

COMMANDLINE="${COMMANDLINE} -sub ${SUBTITLE}"

to, naravno, neće ići, spejsovi u $SUBTITLE stringu će dalje biti tretirani kao i svi drugi spejsovi u COMMANDLINE stringu. Nisam uspeo da rešim ovaj problem, već sam morao da promenim kod, uvodeći if strukturu. Opet workaround, i to ružan. Hoću da mi neko pokaže pravo, robusno rešenje za ovaj problem koje uvek pouzdano radi!
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
 
Odgovor na temu

random
Vladimir Vrzić
Beograd

Član broj: 85
Poruke: 3866
*.eth-wifi.verat.net.

Sajt: www.last.fm/user/vrza


+4 Profil

icon Re: /bin/bash: Razmak u nazivima fajlova i liste04.07.2005. u 17:32 - pre 228 meseci
Post Scriptum:

Q: Kako prepoznati shell skript Linux-centrika?
A: Lako, imaće u prvom redu #!/bin/bash :o)
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
 
Odgovor na temu

[es] :: Skript jezici :: /bin/bash: Razmak u nazivima fajlova i liste

[ Pregleda: 3889 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.