Fórum Ubuntu CZ/SK
Ostatní => Archiv => Téma založeno: ronaldo 30 Listopadu 2007, 15:18:03
-
zdravim,
cel by som sa spytat ci je mozne spravit script, co by ku kazdemu precienku v precienku pridal nejake pismenko. trebars mam 1000 priecinkov v /home/gunz/work a pred kazdy cem pridat pismenko k. (myslim do nazvu). ak je to mozne dalo by sa sem napisat aj konkretny script? dakujem
-
Pokud tam nejsou žádné podsložky:
cd /home/gunz/work
find * | while read s; do mv "$s" "k$s"; done;
-
Pokud tam nejsou žádné podsložky:
cd /home/gunz/work
find * | while read s; do mv "$s" "k$s"; done;
uff. s timhle jsi si nedal moc prace ;/ ??
-- ps navic to nebude fungovat, pokud maji adresare nejaky obsah (coz vetsinou maji pac od toho jsou) a pokud ve jmenu obsahuji mezery :D // a vubec, docela se ti divym, ze tady klukovi vygenerujes prikaz, ktery beze slova zmeni rekurzivne cast filesystemu a jeste evidentne navic mimo jeho pozadavek..
smite once is not enough for you.. GRRR
trebars mam 1000 priecinkov v /home/gunz/work a pred kazdy cem pridat pismenko k. (myslim do nazvu)
zkus spis:
ls -bx1 . &>filelist.txt // '-b' vyescapuje mezery, -x1 tiskne jednu polozku na radek a '&>' zapise do souboru
while read line; do if [ -d "./$line" ]; then echo "k$line"; fi ; done <filelist.txt // ps. vsimni si, ze zde je prikaz 'echo "k$line"' a ne 'mv $line k$line' -- to aby jsi si mohl vyzkouset jestli to skutecne funguje bez nebezpeci zapisu .. take si vsimni podminky 'if [ -d "./$line" ];' coz znemena, pokud je dana polozka adresar, podminky si muzes nejake pridat
enjoy by ntz
-
4 ronaldo >> to co pise Tomas Pikalek rozhodne doporucuji nezkouset!
-
cd /home/gunz/work
rename "s/ */k/" *
ti ku všetkému v /home/gunz/work, vrátane priečinkov a súborov pridá na začiatok "K"
-
cd /home/gunz/work
rename "s/ */k/" *
ti ku všetkému v /home/gunz/work, vrátane priečinkov a súborov pridá na začiatok "K"
nechci prudit: ale zkousel jsi ten prikaz jestli funguje???? ja obcas nevychazim z uzasu, jak jsou nekteri jedinci schopni vyprodukovat nefunkcni smatlave reseni, ktere je potencionalne nebezpecne (meni filesystem) -- to tvoje mi diky bohu pouze nefunguje..
-
mne funguje a robí mi presne to, čo chcel ronaldo
edit: určite by som sem nedával niečo, čo by som si predtým nevyskúšal
-
mne funguje a robí mi presne to, čo chcel ronaldo
$ pwd
/home/nettezzaumana/myscripts_bckp
$ ls
act.txt emailslist_evolution.txt fuj.c veterina_emails.info veterina_mails3.txt veterina_mails.txt
easy_e17.sh final.txt logicals.sh veterina_mails2.txt veterina_mails3.txt~ veterina_mails.txt~
$ rename "s/ */k/" *
$ ls
act.txt emailslist_evolution.txt fuj.c veterina_emails.info veterina_mails3.txt veterina_mails.txt
easy_e17.sh final.txt logicals.sh veterina_mails2.txt veterina_mails3.txt~ veterina_mails.txt~
-- me to nefunguje
-
trebars mam 1000 priecinkov v /home/gunz/work a pred kazdy cem pridat pismenko k. (myslim do nazvu).
mne funguje a robí mi presne to, čo chcel ronaldo
edit: určite by som sem nedával niečo, čo by som si predtým nevyskúšal
:DDD -- ronaldo pise, ze chce menit jmena adresaru, uz nepise, zda-li inkriminovana slozka neobsahuje i soubory, takze bych byl na Tvem miste opatrnejsi v tom co rikam .. bo vic, produkujes-li nejaky prikaz na masivni zmenu souboru .. (no me nastesti nefunguje a moc nechapu, proc funguje //a jestli vubec// funguje Tobe)
-
vychádzal som z tohto howto (http://www.cyberciti.biz/tips/renaming-multiple-files-at-a-shell-prompt.html)
milan@olbrait:~/skuska_rename$ pwd
/home/milan/skuska_rename
milan@olbrait:~/skuska_rename$ ls
dokument dokument.txt priecinok skladba.mp3 skladba.wma
milan@olbrait:~/skuska_rename$ rename "s/ */k /" *
milan@olbrait:~/skuska_rename$ ls
k dokument k dokument.txt k priecinok k skladba.mp3 k skladba.wma
-
Omlouvám se...
to nebude fungovat, pokud maji adresare nejaky obsah (coz vetsinou maji pac od toho jsou)
Ano, to máte pravdu, spletl jsem se, protože špatně rozumím slovensky, resp. nevím co znamená "precienek" (myslel jsem, že soubor, nenapadlo mě, že by to byl adresář)
Pokud to dobře chápu, mělo by to fungovat, kdyby se do find přidalo -maxdepth 0
a pokud ve jmenu obsahuji mezery :D
Proč? V uvozovkách to je, takže by mělo.
-
vychádzal som z tohto howto (http://www.cyberciti.biz/tips/renaming-multiple-files-at-a-shell-prompt.html)milan@olbrait:~/skuska_rename$ pwd
/home/milan/skuska_rename
milan@olbrait:~/skuska_rename$ ls
dokument dokument.txt priecinok skladba.mp3 skladba.wma
milan@olbrait:~/skuska_rename$ rename "s/ */k /" *
milan@olbrait:~/skuska_rename$ ls
k dokument k dokument.txt k priecinok k skladba.mp3 k skladba.wma
vychazet je hezke, ale ty jsi psal, ze jsi to zkousel -- ja taky a me to nefunguje .. nebudem se prudit a osocovat.
ted mi jenom odpovez, pac by me to skutecne zajimalo:
Opravdu Ti to funguje???
-
to že som z neho vychádzal znamená, že som z neho čerpal info na to, ako by to malo fungovať. Ak si si pozeral tú stránku, tak to čo konkrétne chce ronaldo sa tam vôbec nerieši, takže som to musel pred postnutím vyskúšať. A výpis z môjho terminálu hovorí sám za seba
-
4 Tomas Pikalek >> ok, sry, ze jsem na Tebe tak vyjel, ale tohle mi pripada jako trocha nerozum ..
jinak s mezerama to nebude tak jednoduche, pac ja to zkousel puvodne na jeden radek s for, a muzes si sam ozkouset, jak se ten kram chova:
for x in $(ls -bx1 .); do echo "$x"; done // rozesere jmena souboru s mezerou
for x in $(ls -x1 . | sed 's/^/\"/;s/$/\"/'); do echo "$x"; done // o5 to roztahne na vic radku, ackoliv:
ls -x1 . | sed 's/^/\"/;s/$/\"/' // vypada normalne, stejne jako
ls -bx1 .
jedine co me napadlo a fungovalo je to reseni s mezikrokem zapisu do souboru a pak cteni toho souboru.. samotneho by me zajimalo jak to udelat bez mezizapisu