Szkriptek: Python, Perl, Bash, ...

grep es sed szokozt tartalmazo filenevekben

Hali!
Adott egy konyvtar, amiben van tobb alkonyvtar, azokban tobb file. Bizonyos file-okban bizonyos szoveget le akarok cserelni ("ISO-8859-1"-et "UTF-8"-ra, de nem HTML vagy PHP fileok, config fileok. Itt az elso probaban meg nem is akarok cserelni, csak cat segitsegevel elolvasni ezeket a file-okat.)

Elso otlet:
grep -r keresem * | awk '{print $}' > tmpfile
while read ; do cat $REPLY ; done < tmpfile

Ez ugye visszadna "tmpfile"-ban azon file-ok neveit, amiben benne van a "keresem" szo, masodik sor pedig elolvasna ezeket a file-okat.(Nem az, amit en akarok, de ezen konnyebben mutatom). Es itt jon a bibi: a filenevek szokozt tartalmaznak . Tobb probam is volt:
grep -r keresem * | awk '{print $}' | sed '/\ /\\/g' > tmpfile
a tmpfileban gyonyoru:
xx/yy/file\ neve
De ha ugyanezt beolvastatom a "while read" paranccsal, valami ertelmezi a "\" jelet es eltunteti :(

Valami otlet? Persze, megcsinalhatnam, hogy mondjuka "detox" proggival eltuntetem az osszes szokozt es ugy futtatom, csak sajnos ezek a file-ok havonta frissulnek :(

2 pici bash kerdes

Hi!

2 apro kerdesem lenne.

1) Van egy valtozo, ami igy nez ki:

adat1:adat2:adat3:adat4:adat5...

. Hogyan lehet megkapni a 3. kettospont utani reszt bash expansionnel? Ok,

cut -f 3- -d:

megcsinalja, de van erre "csak bashes" megoldas?

2) Legyen adott a fenti valtozo. Hogyan tudok rajta vegigmenni egy ciklussal? Marmint a kettospontok kozotti adatreszekkel. Probaltam az IFS- sel jatszani, de keves sikerrel. 100%, hogy van kismillio megoldas erre guglin, de nem sikerult egyet sem talalnom.

Koszi.

[megoldva] basic bash

Sziasztok!

Szeretnék egy rakatnyi egy mappában lévő fájlt a imagick-al bmp-ből tga-ra átkonvertálni...
egy fájlt így kell:
convert [fajl.bmp] [fajl.tga]
a baj csak az, hogy a fájljaim tartalmaznak szóközt, és azt hiszi a gépem, hogy több paramétert adok meg...
írtam egy szkriptet:


#! /bin/bash
for i in *.bmp;
do
k=`echo $i | tr ' ' '\ '`; #átírom a ' '-eket '\ '-re, mert azt hiszem így kell neki beadni a szóközt, de lehet nem...
j=`echo $k | tr '.bmp' '.tga'`;
convert $k $j;

done

de sajnos nem műlködik...
Hol a hiba?
Hogy kéne csinálnom?

Köszi: Koli

openwebmail, perl, wide char

Sziasztok!
Elore bocsatom, nem tudok perl-ul (es a kesobbiekbol ki fog derulni hogy nem is akarok tudni :]). Szoval a problema a kovetkezo": van egy openwebmail nevu perl-ben irt ize. ez default installal (debian lenny) hisztizik nehany esetben, mikor biz fuggvenyek (md5(), memgzip()) olyan sztringeket kapnak amiben wide char-ok vannak (utf8). Nomarmost az jott le hogy ez a nyelvezet maskepp kezelni a blob-okat es maskepp az utf8-as sztringeket, es az elobb emlitett fv-ek ezutobbiakat nem hajlandoak megenni. Nyilvan a problema szempontjabol rohadtul lenyegtelen hogy az adott sztring utf vagy milyen fiszemfaszom kodolasban van, azt csak le kell tarolni, majd kiadni az egesznek. Kerdes, hogy az egesz perl-ben le lehet tiltani ezt az utf8-as agymene'se't? Az egesz openwebmail-t nem akarom atirni, ha nem muszaj ;) (mar elkezdtem, kiirtottam a memgzip()-et, mondvan hogy http-compressionra nincs szukegunk, deaztan jott tobb hasonlo egyeb, mashol).
thx, A.

bash

Egyelőre így mentek diszket (azóta tovább frissült)...

Chain-Q és LGee után szabadon, egy kisebb tudású, csak tarolós-becsomagolós változat, avagy élő rendszerről mit és hogyan tar-oljunk.

Fontos még az adott architektúránál a $(man hier) elolvasása!


#! /bin/bash
# inicializalas
DISZK=/dev/sda
TARFAJL="$DISZK".tar
FAJLOK="$DISZK".print0
SZURO='/\([.].*\|lost.found\|media\|misc\|mnt\|net\|proc\|selinux\|srv\|sys\|tmp\)/..*'

cat /dev/null > "$FAJLOK"

# megkeressuk a tar-olando fajlokat, es kiirjuk a
# fajllistat egy fajlba, ASCCIZ stringekkent
find / \( -type l -o -type d -o -type f \) \
  \( ! \( -regex '^'"$SZURO"'$' -o -name "$TARFAJL" \) \) \
  -o \( \( -type b -o -type c \) -regex '^/dev/.*$' \) -fprint0 "$FAJLOK"

# GNU-tarolas
tar --no-recursion --force-local -b 1 --null --files-from="$FAJLOK" -cf "$TARFAJL"

# Kesz!
# mar csak /boot/** ertelmezes hianyzik, meg egy $(sfdisk -d > sda.sfdiskscript)
# es persze a fajlrendszerek meghatarozasa a visszaallitashoz szukseges
# mkfs-ezeshez

[Megoldva] Fájlok listája

Ha az alábbi "ls -1 *.rar" parancsot használom pl. rar fájlok listázásakor akkor
pl. valami-10.rar
valami-1.rar
valami-2.rar
stb.

sorrendben kapom meg a fájlneveket. Van-e valami korrektebb módszer amivel rendes sorrendet (1, 2, 3... 10, 11 stb) tudok lekérdezni, anélkül hogy elő kellene nullázám ezeket a számokat (1 -> 01 , 2-> 02 stb)?

[megoldva] Sed (szerintem)

Sziasztok!

Szeretném egy mappámban található összes fájlban (és a benne lévő mappákban lévő fájlokban is, stb...) bizonyos szavakat átírni másik szavakra...
pl az alma szót körte szóra.
két kérdés: sed-del hogy lehet egy fájlban kicserélni a dolgoka, és nem új fájlt létrehozni?

(for i in `ls`;do echo $i;done ezzel ki tudom iratni az összes fájlomat...)

Köszi!

ékezetes karakterek

Sziasztok!

Gondolom amatőr a kérdés, de még sosem találkoztam a problémával, mert ilyet sosem kellett csinálnom.
Ki kellene adjak egy egyszerű 'cd /x/y/FOTÓ' parancsot bash scriptből, de sehogy sem akarja megenni. A locale UTF-8, a fájlrendszerben jól is látszanak a karakterek, de bash folyamatosan azt dobja h. a könyvtár nem létezik, nyilvánvalóan nem értelmezi a nagy, hosszú Ó-t. Az átnevezés sajnos nem megoldás, valahogyan ezt a könyvtárat kellene használnom.
Kérdés tehát, hogy hogyan is írjuk az Ó-t 'bashul'? :)

Köszi,
Zoli