Script per sostituire un file di testo con un altro.

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
sberla54
Master
Master
Messaggi: 1500
Iscritto il: gio 24 giu 2004, 0:00
Slackware: 13.0
Desktop: Gnome (o Fluxbox)
Distribuzione: Ubuntu
Località: Bologna
Contatta:

Script per sostituire un file di testo con un altro.

Messaggio 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!

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

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

Messaggio 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

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

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

Messaggio 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:

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

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

Messaggio da Paoletta »

sberla54 ha scritto:Qualcuno di voi me lo scriverebbe?
che faccia di tolla... :evil: :p :p

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio 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. :)

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio 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.

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio 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à...

Avatar utente
sberla54
Master
Master
Messaggi: 1500
Iscritto il: gio 24 giu 2004, 0:00
Slackware: 13.0
Desktop: Gnome (o Fluxbox)
Distribuzione: Ubuntu
Località: Bologna
Contatta:

Messaggio 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!

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio 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
Ultima modifica di albatros il mer 6 giu 2007, 14:18, modificato 1 volta in totale.

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Messaggio da gioco »


Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio 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'...).

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio 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

Avatar utente
sberla54
Master
Master
Messaggi: 1500
Iscritto il: gio 24 giu 2004, 0:00
Slackware: 13.0
Desktop: Gnome (o Fluxbox)
Distribuzione: Ubuntu
Località: Bologna
Contatta:

Messaggio 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!

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio 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.

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Messaggio 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!!
}

Rispondi