Kirjoittaja Aihe: Tiedostojen listausta ja yhdistämistä.(Ratkaistu)  (Luettu 3239 kertaa)

E.K.Virtanen

  • Käyttäjä
  • Viestejä: 736
    • Profiili
    • Sähköaivoilua
Moi.

Eli tarpeen olisi saada aikaan pieni scripti joka ensiksi listaa kolmessa eri hakemistossa olevat *.yab tiedostot ja sitten yhdistää ne vaikkapa cat komennolla.
Nyt olen jumissa, johtuen varmaan tuosta yhdestä ykkösoluesta jonka join ;D

Eli, ensiksi loin seuraavan filen.

##!/bin/bash
ls *.yab >> osbTemp.txt
ls workFuncs/*.yab >> osbTemp.txt
ls osbFuncs/*yab >> osbTemp.txt


joka saa aikaan osbTemp.txt tiedoston joka näyttää tällä hetkellä tältä

Definitions.yab
TinyBasic.yab
workFuncs/CheckFunctions.yab
workFuncs/CleanUp.yab
workFuncs/CountStatement.yab
workFuncs/GetIntVars.yab
workFuncs/GetStatement.yab
workFuncs/GetStrVars.yab
workFuncs/Platform.yab
workFuncs/SkipSpace.yab
workFuncs/Str2Math.yab
workFuncs/UCaseIt.yab
osbFuncs/ClearS.yab
osbFuncs/Invert.yab
osbFuncs/Rand.yab


Vaan nyt pitäisi saada nuo tiedostot jotenkin yhdeksi ja samaksi tiedostoksi cat/join tms komennolla. Tämä on siis se kohta jossa sormi on syvällä suussa :-/

E.K.Virtanen
« Viimeksi muokattu: 12.04.08 - klo:22.35 kirjoittanut E.K.Virtanen »

Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
Vs: Tiedostojen listausta ja yhdistämistä.
« Vastaus #1 : 12.04.08 - klo:20.28 »
Kokeilin vähän ja sain selville että tällainen voisi toimia:
Koodia: [Valitse]
echo cat | cat - osbTemp.txt | tr "\n" " " | sh > yhdistelma.yab
Eli ensin laitetaan käsky "cat", ja sen perään liitetään osbTemp.txt tiedoston sisältö.
Nyt on tuloksena seuraavanlainen pätkä:
Koodia: [Valitse]
cat
Definitions.yab
TinyBasic.yab
workFuncs/CheckFunctions.yab
...

Tästä poistetaan rivivaihdot tr-komennolla ( toinen |-pipeline) , jolloin saadaan seuraava pätkä:
Koodia: [Valitse]
cat Definitions.yab TinyBasic.yab workFuncs/CheckFunctions.yab ...
Tämä syötetään shellille ( komento sh, esimerkin kolmas |-pipeline) joka suorittaa sen, ja lopuksi suorituksen tulos kirjoitetaan tiedostoon yhdistelma.yab.

gdm

  • Sitä saa mitä tilaa...
  • Käyttäjä
  • Viestejä: 4363
    • Profiili
    • Keskustelualueiden säännöt
Vs: Tiedostojen listausta ja yhdistämistä.
« Vastaus #2 : 12.04.08 - klo:20.54 »
Kokeilin vähän ja sain selville että tällainen voisi toimia:
Koodia: [Valitse]
echo cat | cat - osbTemp.txt | tr "\n" " " | sh > yhdistelma.yab
Eli ensin laitetaan käsky "cat"

Miksi? komennon echo tuloste cat Putkitetaan komennolle cat joka katsoo tiedostoa osbTemp.txt
Nyt menee metsään ja pahasti...
Lisää [Ratkaistu] aloitusviestiin jos ongelmasi selviää!
Saamasi tuki on ilmaista, joten älä vaadi tai uhkaile saadaksesi apua!

Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
Vs: Tiedostojen listausta ja yhdistämistä.
« Vastaus #3 : 12.04.08 - klo:21.11 »
Kokeilin vähän ja sain selville että tällainen voisi toimia:
Koodia: [Valitse]
echo cat | cat - osbTemp.txt | tr "\n" " " | sh > yhdistelma.yab
Eli ensin laitetaan käsky "cat"

Miksi? komennon echo tuloste cat Putkitetaan komennolle cat joka katsoo tiedostoa osbTemp.txt
Nyt menee metsään ja pahasti...

Tarkoituksena on siis saada viimeiselle käskylle sh annettua lista jonka alussa on komento cat, ja sen perässä osbTemp.txt tiedostossa listatut tiedostot. Eli viimeinen käsky on periaatteessa sh "cat tiedosto.yab tiedosto2.yab ..." > yhdistelma.yab.

Siis komennon echo tuloste cat putkitetaan komennolle cat - osbTemp.txt, eli se echo komennon tuloste "cat" tulee tuohon viivan paikalle ( - , eli standard input), eli cat komento tuottaa listan jonka alussa on "cat" ja loput ovat osbTemp.txt tiedoston sisältöä. Tästä listasta poistetaan rivivaihdot ja se annetaan sh käskylle joka suorittaa sen, eli suoritettavaksi tulee "cat tied.yab tied2.yab jne. jne.", joka siis tulostaa kaikki .yab tiedostot yhteenliitettynä.

Kokeilin tuota ja se toimi minulla ihan niin kuin pitääkin.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Tiedostojen listausta ja yhdistämistä.
« Vastaus #4 : 12.04.08 - klo:21.57 »
Eli tarpeen olisi saada aikaan pieni scripti joka ensiksi listaa kolmessa eri hakemistossa olevat *.yab tiedostot ja sitten yhdistää ne vaikkapa cat komennolla.

Koodia: [Valitse]
$ cat *.yab workFuncs/*.yab osbFuncs/*.yab

E.K.Virtanen

  • Käyttäjä
  • Viestejä: 736
    • Profiili
    • Sähköaivoilua
Vs: Tiedostojen listausta ja yhdistämistä.
« Vastaus #5 : 12.04.08 - klo:22.35 »
Terve.

Tosiaan hokasin tuon mgronberin mainitseman yksinkertaisuuden tuossa hetki sitten. Oma "ongelmani" oli että tunkesin kenoviivan myös hakemistojen eteen.
cat *.yab /workFuncs/*.yab... ei toiminut.

Menen tästä puuhun häpeämään.

Kiitoksia avustaneille :)