Poslao: 17 Sep 2007 12:38
|
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.
|
|
Poslao: 17 Sep 2007 17:04
|
offline
- bobby
- Administrator
- 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.
|
|
|
|
Poslao: 17 Sep 2007 22:52
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- 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/
|
|
|
|
Poslao: 18 Sep 2007 01:53
|
offline
- 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
|
|
|
|
Poslao: 18 Sep 2007 03:37
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- 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
|
|
|
|
Poslao: 18 Sep 2007 03:45
|
offline
- 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.
|
|
|
|
Poslao: 18 Sep 2007 13:01
|
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
|
|
|
|
Poslao: 18 Sep 2007 16:02
|
offline
- 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!"
|
|
|
|
|