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

Linux shell komanda za mass rename - POMOC

[es] :: Linux :: Linux shell komanda za mass rename - POMOC

Strane: 1 2

[ Pregleda: 4498 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Linux shell komanda za mass rename - POMOC26.10.2010. u 12:26 - pre 164 meseci
treba mi komanda za mass rename, imam muziku na serveru a imena pesama su u ovom formatu:

imepesme.mp3?l=12&dt=6620e990b28df11541a965f7d92241bc
imepesme.mp3?l=12&dt=3223k4jbgz32526g34u6g3i52352iu353
imepesme.mp3?l=12&dt=353jo43ijoih345h2o3i4jo253i34jo6i34j5

da li postoji neka komanda da primer od "?" na desno ostalo brise sve, da su ovi brojevi i slova u produzetku isti ne bi bilo problem, to bi izgledalo ovako

for i in /pfad/www/muzika/*; do mv "$i" "${i//?l=12&dt=6620e990b28df11541a965f7d92241bc/ }"; done

sad sam upravo primetio da ima 32 znakova u ovim heroglifina, dakle moze i komanda za rename/delete zadnjih X slova u imenu,

da li neko zna kako da to resim ?

Hvala unapred...

[Ovu poruku je menjao adaxx dana 26.10.2010. u 14:42 GMT+1]

[Ovu poruku je menjao adaxx dana 26.10.2010. u 14:43 GMT+1]
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 13:47 - pre 164 meseci
Probaj :

Code:
$ cut -d\? -p1


To ti odsece sve desno, pocev od "?". Onda to pustis kroz tvoji for petlju i radis mv .

Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
77.46.145.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 14:03 - pre 164 meseci
Tip:

srdjan@Desktop ~/proba $ echo $String
Srdjan.mp3abc

srdjan@Desktop ~/proba $ echo ${String%%.mp3*}'.mp3'
Srdjan.mp3

Kao $String uzimaj imena fajlova iz direktorijuma, kroz petlju i odradjuj move u svakom prolazu.

:)

/edit: Znaci izvuci sub-string pre ".mp3" dela, a onda samo jos dodati ".mp3" umesto svog onog sran|a :)

Evo jos jedan primer:


srdjan@Desktop ~/proba $ String='Pavlovic.Srdjan.svastanestojosovdepise'
srdjan@Desktop ~/proba $ echo ${String%%.sva*}'.mp3'
Pavlovic.Srdjan.mp3
srdjan@Desktop ~/proba $


[Ovu poruku je menjao Srđan Pavlović dana 26.10.2010. u 15:17 GMT+1]
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 14:49 - pre 164 meseci
Da li mozes da mi das jedan primer cele komande kako bi izgledala, ja i linux smo razlicita sveta, ali potrebno mi je ovo da sredim muziku na serveru,

primer muzika mi se nalazi u /home/www/website.eu/muzika/

sta i kako trebam da kucam, zamolio bi te ako mozes da mi ispises celu komadnu


Hvala
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
77.46.145.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 15:12 - pre 164 meseci
Ne odgovaram za posledice upotrebe ove moje skripte (ako se potkrala neka greska), ali kod mene radi ovako:

Code:

#!/bin/bash

 echo "Izmeni naziva fajlova..."

 for StariNaziv in ./*

do

  NoviNaziv=${StariNaziv%%.mp3*}'.mp3'
 
  mv -v $StariNaziv $NoviNaziv
 
done



TEST:


srdjan@Desktop ~/proba $ ls -l
total 4
-rw-r--r-- 1 srdjan srdjan 0 2010-10-26 16:09 pesma1.mp3eeeeee
-rw-r--r-- 1 srdjan srdjan 0 2010-10-26 16:09 pesma2.mp3aaaaaa
-rw-r--r-- 1 srdjan srdjan 0 2010-10-26 16:09 pesma3.mp3cccccc
-rw-r--r-- 1 srdjan srdjan 0 2010-10-26 16:09 pesma4.mp3ffffff
-rw-r--r-- 1 srdjan srdjan 0 2010-10-26 16:10 pesma5.mp3gggggg

srdjan@Desktop ~/proba $ ./radi
Izmeni naziva fajlova...
`./pesma1.mp3eeeeee' -> `./pesma1.mp3'
`./pesma2.mp3aaaaaa' -> `./pesma2.mp3'
`./pesma3.mp3cccccc' -> `./pesma3.mp3'
`./pesma4.mp3ffffff' -> `./pesma4.mp3'
`./pesma5.mp3gggggg' -> `./pesma5.mp3'

srdjan@Desktop ~/proba $ ls
pesma1.mp3 pesma2.mp3 pesma3.mp3 pesma4.mp3 pesma5.mp3
srdjan@Desktop ~/proba $


Test skript sam pokrenuo iz tekuceg direktorijuma, gde su ti mp3 fajlovi.
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
77.46.145.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 15:20 - pre 164 meseci
Probaj je prvo iz nekog foldera gde su ti Seka Aleksic i Jelena Karleusa, ili tako nesto.. za svaki slucaj...
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 15:41 - pre 164 meseci
Hvala puno Srdjane, uspelo je,
bas si me nasmejao sa Sekom i Karleusom :)
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 16:45 - pre 164 meseci
Srdjane, a reci mi kako da napravim da radi ovo i za subfoldere, ajd pomagaj :) castim pivo :)
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 18:36 - pre 164 meseci
Ajde da probamo sa cut :

Code:
for i in `find . -name \*mp3\*` ; do j=`cut -d\? -f1` && echo "mv $i $j" ; done


Ovo ce samo da ispise komande. Ako radi pokreni jos jednom, pa na kraj dodaj | bash .

(Nisam probao, kuckam iz glave...)
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

maksvel

Moderator
Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Linux shell komanda za mass rename - POMOC26.10.2010. u 21:22 - pre 164 meseci
Hehe, ja nisam uspeo iz glave - tek učim perl (valjda imaš instaliran perl tamo, a?), ali evo sa neta + ja zbrljao malo, na JEDNOM primeru mi je uspelo, ali što kaže Srki, isprobaj prvo na Karleuši (ako je prekoostala od prošlog puta)

Code (perl):

#!/usr/bin/perl
 use warnings;
 use strict;

 use File::Find;

 find(\&mp3, ".");

 sub mp3 {
    next if -d $_;
    next if /^\./;
    next unless /mp3/;

    my $new_name = $_;
    $new_name    =~ s/mp3.*/mp3/g;
    chdir($File::Find::dir);
    rename($_, $new_name) or die $!;
 }
 


Znači, ovo ubaciš u naddirektorijum, a on će posle da šalta nadole
I da - regex ruleZ

[Ovu poruku je menjao maksvel dana 26.10.2010. u 22:37 GMT+1]
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 18:14 - pre 164 meseci
Hmm na zalost ne ide ovo..:( ili ja nesto pogresno radim...

maksvel, da li mozes da mi objasnis malo kako ide to za perl... tekst editor i snimam kao ? i kako se pokrece, mozda sam ja pogresno uradio nesto...

objasnjenje ako moze...

hvala
 
Odgovor na temu

maksvel

Moderator
Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 18:59 - pre 164 meseci
Slično kao bash - možeš da staviš ekstenziju .pl ako hoćeš (a i ne mora). Znači, samo ovaj kod u fajl.
Daš prava chmod a+x i pokreneš sa ./imeskripta.pl u glavnom direktorijumu.

(BTW, ima neka fora sa zsh globovima, ali mi to pod Ubuntuom nije proradilo, a bilo bi mnogo elegantno )
rename 's/\.mp3.*/\.mp3/' **/*(.)

Znači, koristi se standardni rename, a on prima i perlove izraze, a ovo sa zvezdicama su ti rekurzivni globovi. Pa ako neko od ovih skriptoljubitelja zna, neka skocka
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.com
Via: [es] mailing liste



Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 19:25 - pre 164 meseci
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 19:27 - pre 164 meseci
Bas tako sam uradio ali ne die,ja na serveru imam "suse" da li je to mozda neki problem ? ili je to isti krompir samo drugo pakovanje, posto kazes da ti koristis ubuntu...
Ovo mi izbacuje kada startujem skriptu...

: command not foundcode:perl]
./mp3.pl: line 3: use: command not found
: command not found
./mp3.pl: line 4: use: command not found
: command not found
: command not found
./mp3.pl: line 6: use: command not found
: command not found
: command not found
./mp3.pl: line 8: syntax error near unexpected token `\&mp3,'
'/mp3.pl: line 8: ` find(\&mp3, ".");
 
Odgovor na temu

maksvel

Moderator
Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 19:37 - pre 164 meseci
Nemaš instaliran perl. :\
Ništa, naći ćemo bash skriptu.
A ovo Nikolino, ne radi ili...?
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 19:46 - pre 164 meseci
Ne radi, probao sam kucam kako je on napisao i stoji ne desava se nista... nisi pise gresku niti nista.....

ako si mislio na ovo
for i in `find . -name \*mp3\*` ; do j=`cut -d\? -f1` && echo "mv $i $j" ; done
 
Odgovor na temu

maksvel

Moderator
Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 19:51 - pre 164 meseci
Evo ovaj - isprobao sam ga malopre - ipak, probaj sa nečim rezervnim (ili DODAJ prvo echo ispred mv, pa onda proveri da li radi šta treba)- bash skripta:
Code (bash):

#!/bin/bash
find . -type f -printf '%p\n' | while read file; do
  oldfile=$(basename "$file")
  newfile=$(echo "$oldfile" | sed 's/mp3.*/mp3/g')
  if [ ! "$newfile" == "$oldfile" ]; then
    mv "$file" "${file%$oldfile}$newfile"
  fi
done
 


(nađeno na netu, blago izmenjeno )
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 20:12 - pre 164 meseci
mhm :(

-bash: ./test: /bin/bash^M: bad interpreter: No such file or directory


nece...
 
Odgovor na temu

maksvel

Moderator
Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 20:17 - pre 164 meseci
Proveri tekst - izgleda imaš neki karakter viška. Udari delete posle /bin/bash
Probaj čak i bez prve linije...
 
Odgovor na temu

adaxx
Beograd

Član broj: 214567
Poruke: 68
*.9.15.vie.surfer.at.



Profil

icon Re: Linux shell komanda za mass rename - POMOC27.10.2010. u 20:28 - pre 164 meseci
bez prve linije isto nece ovo mi izbacuje...

./test: line 7: syntax error near unexpected token `done'
./test: line 7: `done'

a ovo sto si mi reko da udarim del nema praznih polja, :(
 
Odgovor na temu

[es] :: Linux :: Linux shell komanda za mass rename - POMOC

Strane: 1 2

[ Pregleda: 4498 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

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