Pagina 1 di 2

Script per sostituire un file di testo con un altro.

Inviato: mer 6 giu 2007, 2:21
da sberla54
Ciao a tutti.

Dovrei aggiornare un file presente in svariate directory con la sua versione aggiornata e non ho neppure intenzione di pensare di farlo a manina.

Mi chiedevo se fosse possibile farlo con uno script in bash.

Tutto cio' che deve fare e':
- scorrere ricorsivamente varie directory e sottocartelle (di 2 livelli di profondita, max 3)
- trovare il vecchio file con il vecchio nome (che e' diverso dal nuovo)
- rimpiazzarlo di volta in volta con il nuovo

Qualcuno di voi me lo scriverebbe?

In alternativa esiste un programma che faccia qualcosa del genere?

Per ultima cosa, l'idea che un'operazione cosi' si possa fare anche all'interno di archivi zip, senza decomprimerli, e' fattibile?

Grazie! :)
Ciao!

Re: Script per sostituire un file di testo con un altro.

Inviato: mer 6 giu 2007, 2:54
da targzeta
sberla54 ha scritto:....Mi chiedevo se fosse possibile farlo con uno script in bash...
Si, è possibile.
sberla54 ha scritto:...Qualcuno di voi me lo scriverebbe?...
Io no!!!
man find, man bash, man cp, man mv, e un pò di fantasia.
sberla54 ha scritto:...Per ultima cosa, l'idea che un'operazione cosi' si possa fare anche all'interno di archivi zip, senza decomprimerli, e' fattibile?
man zip

Lo so lo so, è difficile leggere tutte ste cose, ma la teoria "se maometto...", qui diventa "se non sgobbo io..." e non va bene.

Scusami eh, però pure tu ;)

Spina

Re: Script per sostituire un file di testo con un altro.

Inviato: mer 6 giu 2007, 10:54
da masalapianta
sberla54 ha scritto: Qualcuno di voi me lo scriverebbe?
rotfl :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Re: Script per sostituire un file di testo con un altro.

Inviato: mer 6 giu 2007, 11:15
da Paoletta
sberla54 ha scritto:Qualcuno di voi me lo scriverebbe?
che faccia di tolla... :evil: :p :p

Inviato: mer 6 giu 2007, 12:26
da albatros
Suvvia, ha chiesto un favore, se uno non vuole non glielo fa...
Mica siamo a scuola dove uno chiede di copiare i compiti a casa che hanno richiesto un pomeriggio per essere fatti e dove è diseducativo farsi fare le cose dagli altri perché altrimenti non si impara...
Concordo anch'io che sarebbe meglio che uno si leggesse un minimo di documentazione o provasse prima almeno un po' da solo per poi chiedere aiuto se non riesce e capire dove sbaglia, concordo che se uno sceglie una distribuzione come la slackware dovrebbe essere un pochino più disposto di altri a usarla nella maniera più naturale e a impratichirsi un po' con shell e tool vari da linea di comando, però non sempre uno può avere il tempo, la voglia o l'interesse per farlo.
Personalmente in caso di bisogno preferisco più un buon link alla documentazione, una spiegazione teorica o un suggerimento per andare avanti più che una soluzione già confezionata, anche perché va a mio vantaggio per la volta successiva, ma l'utente linux medio è cambiato molto con gli anni e c'è ormai chi è interessato solo a che una cosa funzioni e basta, senza tanti approfondimenti o spiegazioni o intense letture per apprendere un comando.
Non discuto se sia conveniente o meno questo atteggiamento, non so se siamo in questo caso o se si tratti di temporanea mancanza di tempo, non persisto nel già dibattuto argomento di come dovrebbe comportarsi un utente linux oggi, non entro nella discussione se, perché e come linux debba essere un os per tutti, mi limito solo a considerare che dinanzi ad una richiesta educata, per qualcuno ragionevolissima, magari per qualcun altro sfacciata, forse l'atteggiamento migliore sia accoglierla e rispondere oppure ignorarla o al limite esporre rispettosamente il proprio punto di vista.

@sberla54:
Per quanto riguarda la domanda, non è il modo migliore, né il più elegante, ma dovrebbe funzionare:
supponendo che nella directory corrente pippo.txt sia la versione aggiornata di clarabella.txt presente in alcune sottodirectory della directory corrente fino a 3 livelli sotto puoi dare:

Codice: Seleziona tutto

find ./ -maxdepth 3 -name "clarabella.txt" -exec cp -f pippo.txt {} \;
Chiaramente se ti documenti un po' puoi modellarlo ai tuoi bisogni e migliorarlo quanto vuoi. :)

Inviato: mer 6 giu 2007, 12:38
da albatros
Ah, scusa, rileggendo il post iniziale mi sono reso conto che non era proprio quello che volevi (scusa, è che stanotte ho dormito pochissimo e ho i neuroni ingolfati...).

Codice: Seleziona tutto

for i in $(find ./ -maxdepth 3 -name "clarabella.txt"); do rm $i; cp pippo.txt $(dirname $i); done
Non se se era quello che volevi...

Per zip, sì, è fattibile.

Inviato: mer 6 giu 2007, 14:04
da Paoletta
albatros ha scritto:Suvvia, ha chiesto un favore, se uno non vuole non glielo fa...
albatros la mia affermazione era scherzosa anche se contiene un fondo di verità...

Inviato: mer 6 giu 2007, 14:06
da sberla54
Io no!!!
rotfl Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing
che faccia di tolla... Evil or Very Mad Razz Razz
-.-
Io non so ancora nulla di bash...dal mio punto di vista credo sia 1 riga di script...
In ogni caso mi sono espresso male...avrei dovuto domandare se qualcuno di voi per caso aveva uno script simile gia' scritto per se, piuttosto che chiedere favori.
Scusate.
albatros la mia affermazione era scherzosa anche se contiene un fondo di verità...
Chiedo venia, mia moderatrice. :)
Suvvia, ha chiesto un favore, se uno non vuole non glielo fa...
Mica siamo a scuola dove uno chiede di copiare i compiti a casa che hanno richiesto un pomeriggio per essere fatti e dove è diseducativo farsi fare le cose dagli altri perché altrimenti non si impara...
Concordo anch'io che sarebbe meglio che uno si leggesse un minimo di documentazione o provasse prima almeno un po' da solo per poi chiedere aiuto se non riesce e capire dove sbaglia, concordo che se uno sceglie una distribuzione come la slackware dovrebbe essere un pochino più disposto di altri a usarla nella maniera più naturale e a impratichirsi un po' con shell e tool vari da linea di comando, però non sempre uno può avere il tempo, la voglia o l'interesse per farlo.
Personalmente in caso di bisogno preferisco più un buon link alla documentazione, una spiegazione teorica o un suggerimento per andare avanti più che una soluzione già confezionata, anche perché va a mio vantaggio per la volta successiva, ma l'utente linux medio è cambiato molto con gli anni e c'è ormai chi è interessato solo a che una cosa funzioni e basta, senza tanti approfondimenti o spiegazioni o intense letture per apprendere un comando.
Non discuto se sia conveniente o meno questo atteggiamento, non so se siamo in questo caso o se si tratti di temporanea mancanza di tempo, non persisto nel già dibattuto argomento di come dovrebbe comportarsi un utente linux oggi, non entro nella discussione se, perché e come linux debba essere un os per tutti, mi limito solo a considerare che dinanzi ad una richiesta educata, per qualcuno ragionevolissima, magari per qualcun altro sfacciata, forse l'atteggiamento migliore sia accoglierla e rispondere oppure ignorarla o al limite esporre rispettosamente il proprio punto di vista.
Copiare e' uno dei metodi piu' semplici per imparare.
Ho altri script in bash (un paio) passatemi da alcuni amici e mi sono serviti per iniziare a comprendere un po' la logica della bash.
Detto questo, mi piacerebbe molto impararare ad utilizzare la bash e scriptare per conto mio, ma ora come ora ne so poca o niente, nonostante abbia anche letto qualche articolo sulle riviste specializzate.
Mi ci mettero' dietro, prima o poi...spero prima.
Non e' un fatto che "l'utente linux e' cambiato negli ultimi anni"...mi offendete cosi', se posso dirla tutta....non sono un ubuntiano e se cercate i miei vecchi post credo di aver sempre cercato ci capire le cose piuttosto che farle funzionare a manazza o farmele sistemare da chissa' chi.
Gia' il fatto di usare slackware dovrebbe farvelo pensare.

comunque fa niente...tanto lo sapevo anche prima che vi stavo antipatico :) :)
@sberla54:
Per quanto riguarda la domanda, non è il modo migliore, né il più elegante, ma dovrebbe funzionare:
supponendo che nella directory corrente pippo.txt sia la versione aggiornata di clarabella.txt presente in alcune sottodirectory della directory corrente fino a 3 livelli sotto puoi dare:
Codice:
find ./ -maxdepth 3 -name "clarabella.txt" -exec cp -f pippo.txt {} \;
Chiaramente se ti documenti un po' puoi modellarlo ai tuoi bisogni e migliorarlo quanto vuoi.
Grazie mille!
Lo provo appena riesco poi ti faccio sapere :) (ovviamente provo la versione che hai corretto)
Spero di non averti rubato troppo tempo :)

Infine:
visto che mi avete messo la pulce nell'orecchio, qualcuno di voi ha qualche link di siti dedicati solo allo scripting in bash?
Altrimenti un bel librino? Anche solo qualcosa "4 dummies" :)

Grazie a tutti comunque!

Inviato: mer 6 giu 2007, 14:11
da albatros
@paoletta:
:oops: Ah, ok, scusa tanto, allora...
E' che, come già detto, sono travolto dal sonno e non conetto bene...
Però ho scoperto cosa vuol dire tolla (http://www.demauroparavia.it/120847), fino a qualche ora fa non lo sapevo... Grazie per l'ampliamento dei miei (nebbiosi) orizzonti culturali! ;)
Buona giornata a tutti e scusate il tono del post precedente che non voleva esser polemico e inappropriato, ma forse lo è stato...
:D

Inviato: mer 6 giu 2007, 14:13
da gioco

Inviato: mer 6 giu 2007, 14:26
da albatros
Non e' un fatto che "l'utente linux e' cambiato negli ultimi anni"...mi offendete cosi', se posso dirla tutta....
Noo, scusa allora, figurati se volevo offenderti... :)
Comunque avevo scritto che:
non so se siamo in questo caso
Copiare e' uno dei metodi piu' semplici per imparare.
Sì, però ha i suoi limiti e non sempre è efficace... Lo è se si prende come spunto per spingersi oltre, modificando e sperimentando sulla base di quanto copiato... :)

Per il bash scripting concordo appieno con gioco, magari ti conviene la versione in inglese su http://www.tldp.org, che è spesso più amplia della traduzione italiana di cui non è solitamente disponibile la versione più aggiornata (semmai verifica e confronta un po'...).

Inviato: mer 6 giu 2007, 15:05
da targzeta
sberla54 ha scritto:...comunque fa niente...tanto lo sapevo anche prima che vi stavo antipatico...
Pensa invece che a me chiunque abbia nella firma http://www.punk4free.org e in "icona" che mi ricorda molto "I tre allegri ragazzi morti" sta simpatico a priori :)
sberla54 ha scritto:...qualcuno di voi ha qualche link di siti dedicati solo allo scripting in bash?...
Ma il manuale sta così antipatico? Lo so che è lungo, ma quelli che l'hanno scritto ci avranno perso molto tempo e mi sembra sgarbato non renderli omaggio, indi per cui il mio suggerimento è.
man bash
Spina

Inviato: mer 6 giu 2007, 22:38
da sberla54
Noo, scusa allora, figurati se volevo offenderti...
Bhe si lo so...in realta' facevo un po' di scena non ti preoccupare :)
Sì, però ha i suoi limiti e non sempre è efficace... Lo è se si prende come spunto per spingersi oltre, modificando e sperimentando sulla base di quanto copiato... Smile
Sacrosanto :)
Sai quante cose vorrei imparare? Vorrei delle giornate di 100 ore...mi stavo anche informando sul sonno polifasico "alla leonardo da vinci" per avere piu' tempo per le mie robe e meno tempo per una vita normale :) :)
http://www.pluto.it/ildp/guide/abs.html
--
Per il bash scripting concordo appieno con gioco, magari ti conviene la versione in inglese su http://www.tldp.org, che è spesso più amplia della traduzione italiana di cui non è solitamente disponibile la versione più aggiornata (semmai verifica e confronta un po'...).
Grazie ad entrambi :)
Pensa invece che a me chiunque abbia nella firma http://www.punk4free.org e in "icona" che mi ricorda molto "I tre allegri ragazzi morti" sta simpatico a priori Smile
Lol complimenti per il colpo d'occhio...la mascherina e' proprio quella :)
Punk4free invece e' la mia punkzine...il mio piccolo bimbo...anche se e' venuto fuori male :)
Ma il manuale sta così antipatico? Lo so che è lungo, ma quelli che l'hanno scritto ci avranno perso molto tempo e mi sembra sgarbato non renderli omaggio, indi per cui il mio suggerimento è.
man bash
Ho capito l'antifona :)
Di solito, per abitudine, sicuramente cattiva, il man e' fra le ultime cose che consulto...prima googlo...poi forum di fiducia...e poi man, dove solitamente capisco sempre poco.
comunque grazie del consiglio, me lo leggero' un po'.

Ora che ci penso il presidente del "mio" lug sta facendo il professore in un corso a pagamento sulla bash a bologna...stressero' anche lui :)

Ciao!

Inviato: mer 6 giu 2007, 23:56
da albatros
@spina:
Esprimo un parere personale:
il manuale di bash è ottimo ed è comodissimo da consultare, ma non è il massimo per imparare l'uso della shell e comprenderne appieno le potenzialità se già non la si sa un minimo usare... Certo, c'è tutto, ma a tratti è un po' ermetico...
L'abs è corredata di moltissimi esempi e in alcuni di essi vengono trattati altri comandi utili, tipo find, xargs, awk e sed.

Inviato: gio 7 giu 2007, 8:42
da aschenaz
sberla54 ha scritto:Punk4free invece e' la mia punkzine...il mio piccolo bimbo...anche se e' venuto fuori male :)
OT (scusate) {

Sei tu il colpevole di punk4free? :shock:

:mille: Ne ho scaricata di roba!!
}