htm2html:
#!/bin/sh
for name in ${@} ; do mv ${name} ${name}l ; done
Takhle by ale byly všechny existující soubory přepsány
for name in ${@} ; do echo 'n' | mv -i ${name} ${name}l ; done
Tohle už nepřepíše existující soubory, ale narozdíl od perlového vzoru vypíše všechny otázky zda přepsat, nebo nepřepsat soubor (což by nakonec mohla být i výhoda :).
for name in ${@} ; do echo 'n' | mv -i ${name} ${name}l > /dev/null ; done
Tahle verze by měla fungovat stejně jako program v Perlu.
2lower:
#!/bin/sh
for name in ${@} ; do
echo 'n' | mv -i ${name} `echo ${name} | tr [:upper:] [:lower:]` > /dev/null ;
done
mvfl:
#!/bin/sh
floppy='/mnt/floppy';
while [ 1 ]; do
mount ${floppy}
mv -ivr ${floppy}/* ./
umount ${floppy}
echo 'Další disketa? (ENTER=Ano, CTRL+C=Ne)'
read
done
Použít perl místo sedu jen pro nahrazení jednoho řetězce jiným se mi zdá jako trochu moc velký luxus, je ale pravda, že sed pokud vím neumí vytvářet zálohy měněných souborů. Že jdou obrázky stahovat i lynxem jsem nevěděl, doposud jsem používal wget, který navíc umí stahovat i rekurzivně.
Disclaimer:
Perl mám taky rád, ale na některý věci je to podle mě kanón na vrabce, a skriptíky co jsem sem napsal snad nejsou až tak moc složitější, než ty perlovské. Je pravda, že kdyby první parametr pro htm2html měl být string, který se pak přidá ke jménu ostatních souborů (místo 'l'), tak bych asi se shellem skončil.
Nejsem tu za zadnej flamewar Perl kontra shell. Naopak jsem rad, ze se tu vyskytnou stejny veci z vic pohledu - alespon se neco priucim. Tady je moje troska do mlyna:
Predchozi skripty v shelu mely oproti originalni perlove verzi tu nevyhodu. ze kdyz se nahodou vyskytlo dlouhe jmeno s mezerou napr. "Dlouhe Jmeno" (nebijte me prosim, taky by mne nenapadlo pojmenovavat to s mezerama, ale bydlicove jsou vsici tezce Windowsoidni) soubory se neprejmenovaly.
Takze nejak takhle?:
htm2html:
#!/bin/sh
#pouzita pripona
SUF="l"
#pro vsechny soubory zadane jako parametr
# vsimnete si znaku "
for NAME in "${@}" ; do
NEWNAME="${NAME}${SUF}"
mv "${NAME}" "${NEWNAME}"
done
A jeste jak zpatky udelat z nejake pripony uplne jinou (typicky treba .wav -> .mp3)
encode:
#!/bin/sh
#Usage: encode *.wav
# encode file1.wav file2.wav file3.wav
#Program a parametry pouzite pro komprimaci
ENC="lame -h -b 128"
for FILE in "${@}" ; do
#urizni priponu .wav, pridej priponu .mp3
NEW="`basename \"$FILE\" .wav`.mp3"
${ENC} "${FILE}" "${NEW}"
done
preji hezky den
Michal Ambroz (O_O)
No ja bych to ve vasem pripade taky videl jako vyzvu, jestli umite plodit takove clanky, plodte, proc tu jeste nejsou?
Osobne nejsu v svete Unixu uplny novacek, ale vsechno nikdy vedet nebudu a verte mi za vy taky ne. A to zatim vubec nemluvime o lidech, kteri by treba neco jako Linux radi zkusili a treba hledaji jak zacit (a ze jsem jich takovejch videl).
Jednoduchej, slusne komentovanej priklad vyda za deset stran manualu. Ne ze bych nemel rad manualy, ale pro zacatek nemusim vedet uplne vsechno.
Michal Ambroz (O_O)
Mozna radeji pouzijte
1) "{}" aby se vam neztratily nekde nejaky soubory s mezerama v nazvu
2) trosku otodoxnejsi syntaxi prikazu find aby vam ten skritpt pripadne chodil i na sunech nebo na jinych unixech
Mozna nejak takhle:
r2lower:
#!/bin/sh
#pouziti: r2lower "x*"
# r2lower "*.wav"
find . -name "$1" -exec ./2upper "{}" ";"
teda aspon na debiane umoznuje nieco taketo
rename 'regexp' subory
takze
rename 's/(.*)\((\d*)\).mp3/$2 - $1.mp3/' *.mp3
premenuje vsetky mp3 subory meno(01).mp3 na 01 - meno.mp3
v debiane patri do zakladneho balika perl a jeto super program... inde som ho zatial nevidel. zrejme je z perlu alebo z CPAN