Pomoc oko bash skripte

Pomoc oko bash skripte

offline
  • Pridružio: 19 Maj 2005
  • Poruke: 352
  • Gde živiš: Sabac - Novi Sad

Ovakva je situacija:
Imam brdo (120) fajlova ciji su nazivi tipa Dm1-0-strongSP.lsm - TV - 100.tif ili Dm1-0-strongSP.lsm - TV - 13.tif znaci nije fiksni broj karaktera. Sad bi to sve trebalo da stavim kao ulazni argument u c program.
Obzirom da ima praznih mesta u nazivu program se totalno zbuni, odnosno svaki podstring u nazivu fajla konta kao poseban argument.
Al, ald' ovako, kako da promenim imena svih fajlova tako da u nazivu ostaje samo broj.tif?

Hvala...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ime fajla mora da ide pod navodnike ukoliko ima razmak ili znakove interpunkcije u imenu, kao i vise od jedne ekstenzije.



offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Mislim da ti ovaj skript moze pomoci:

mvb




Citat:mvb is a shell script written for *BSD and Linux users, to
"batch rename" files (change the name of many files at once) in
the current working directory. It is used from the command line
of your current shell and invokes the Bourne shell (sh) by
default, or the BASH shell (by editing the first line of the
script), to execute the script.

It is ideal for users who have directories of images or other
files that are related by theme. For example, users of digital
cameras (which often give each image a generic filename) or
those who have downloaded a lot of images from the Internet


Url: http://www.xscd.com/pub/mvb/

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Hm, sa sledecom skriptom ako string nema prazna polja skripta radi, ako stavim sa praznim poljima (kao sto je gore) onda nece? Skripta:

#!/usr/local/bin/bash
for i in *.tif
 do
 polje=${i:22:6}
mv $i 'test.'$polje''
done


Za Dm1-0-strongSP.lsm-TV-13.tif rezultat je test.13.tif

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Nisam trenutno na Linuxu, pa ne mogu da proverim... Ali mozda ovako hoce?

#!/usr/local/bin/bash
for i in *.tif
 do
 polje=${i:22:6}
mv "$i" 'test.'$polje''
done

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Malo sam doradio...:

[dalibor@soxxx /tmp/A]$ ls
Dm1-0-strongSP.lsm - TV - 13.tif        Dm1-0-strongSP.lsm - TV - 15.tif        skripta2
Dm1-0-strongSP.lsm - TV - 14.tif

[dalibor@soxxx /tmp/A]$ ./skripta2

[dalibor@soxxx /tmp/A]$ ls
proba.13.tif    proba.14.tif    proba.15.tif      skripta2
[dalibor@soxxx /tmp/A]$

Skripta:

#!/usr/local/bin/bash
ls *.tif | while read i
do
novifajl=`echo $i | sed 's/ //g'`
mv "$i" $novifajl
polje=${novifajl:22:6}
mv $novifajl 'proba.'$polje''
done


@bocke

Nisam probao, moguce da je bilo do navodnika.

offline
  • Pridružio: 19 Maj 2005
  • Poruke: 352
  • Gde živiš: Sabac - Novi Sad

Hvala, prvo sto sam pokusao bio je ovaj soxxx-ov kod i prosao je bez ikakvih problema. Hvala puno Wink

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Samo pazi, ovo "izdvaja" zadnih 6 karaktera, vidim ti gore imas i fajlove sa brojkom *100.tif sto znaci da ce ti dati nesto kao "100.ti" dok ce za one dvocifrene raditi. Samo malo doradi skriptu i naravno: "test before use and wear a condom!" Very HappyVery Happy

offline
  • Pridružio: 19 Maj 2005
  • Poruke: 352
  • Gde živiš: Sabac - Novi Sad

soxxx ::Samo pazi, ovo "izdvaja" zadnih 6 karaktera, vidim ti gore imas i fajlove sa brojkom *100.tif sto znaci da ce ti dati nesto kao "100.ti" dok ce za one dvocifrene raditi. Samo malo doradi skriptu i naravno: "test before use and wear a condom!" Very HappyVery Happy

To sam odmah spazio i sredio Wink

Ko je trenutno na forumu
 

Ukupno su 833 korisnika na forumu :: 33 registrovanih, 9 sakrivenih i 791 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Andrija357, bigfoot, bobomicek, Boris BM, Brana01, cavatina, CikaKURE, Dimitrije Paunovic, Dimitrise93, doktor1964, dushan, galerija, Georgius, Ivica1102, kybonacci, Litostroton, maiden6657, Marko Marković, mercedesamg, MiroslavD, Mlav, mnn2, nebkv, NikolaGTR, Panter, ruger357, Stoilkovic, vathra, voja64, YugoSlav, ZetaMan, zlaya011