Onko jokin ohjelma ( helppokäyttöinen ), joka etsii tietyn merkkijonon ( myös HTML-tekstistä ) ja korvaa sen uudella.
Ohjelman tulisi olla sellainen että se hakee merkkijonon hakemistosta ja hakemiston alihakemistosta jne riippumatta missä tiedostossa tekstijono esiintyy.
Ohjelman tulisi olla sellainen että se hakee merkkijonon hakemistosta ja hakemiston alihakemistosta jne riippumatta missä tiedostossa tekstijono esiintyy.
Vastaukset 4
Vanhimmat
Jos käyttöympäristönä on UNIX/Linux, niin onnistunee helposti grepillä, sedillä, awkilla, perlillä, ..
Muista käyttöjärjestelmistä en tiedä miten homma tehdään niissä.
oooooooooo :(
Oikeastaan tämä kuuluiis ohjelmointialueelle mutta oli niin tylsää.
Tämän tapaiset pikkuhommelit onnistuvat helposti pyyttonilla eikä tarvitse olla kummoinen ohjelmointiguru :)
Elikkäs tämmöinen pieni pätkä tekee periaatteessa mitä haluat ja vähän enemmänkin koska voi määritellä tiedostopäätteet vain mitkä käsitellään.. pakko ei toki ole arvelin sen vain olevan noin kätevämpi.
Tietty jos pythonia ei ole eikä jaksa asentaa joutuu muunlaisiin konsteihin turvautumaan;)
Kunhan pythoni löytyy ohjelman voi ajaa tyylillä:
Keijo.py "c:\mun hakemisto" "Keijo on mun idoli" "Keijo sucks!!!"
.. jonka jälkeen ohjelma kahlaa "c:\\mun hakemisto" lähtien kaikki hakemistot alihakemistoineen ja korvaa kaikista .txt ja .htm -päätteisistä tiedostoista merkkijonot "Keijo on mun idoli" merkkijonolla "Keijo sucks!!!"
Varotuksena että "ohjelmasta" uupuu ylimääräset virhetarkistukset sun muut kuten käyttöoikeus jne seikat. Tosin ne olisi vain pieni lisä mutta jätin pois sotkemasta.
import os, sys
def Keijo(cur_dir):
listing = os.listdir(cur_dir)
for item in listing:
filename = os.path.join(cur_dir, item)
if os.path.isdir(filename):
Keijo(filename)
elif os.path.splitext(filename)[-1] in (".txt", ".htm"):
data = file(filename, 'r').read()
file(filename, 'w').write(data.replace(str1, str2))
if __name__ == '__main__':
global str1, str2
if len(sys.argv) != 4:
print 'Usage: %s ' % os.path.basename(sys.argv[0])
else:
str1 = sys.argv[2]
str2 = sys.argv[3]
Keijo(os.path.abspath(sys.argv[1]))
Täytyy koittaa ajaa...