|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 119
|
[BASH] script per rinominare dei file
Salve a tutti, avrei un piccolo problema. Premetto che nn ho praticamente mai programmato script, infatti questi sono esercizi con i quali sto' imparando. Devo realizzare uno script che realizza un comando con questa sintassi:
modify [dir] suffix che cambia tutti i file in dir aggiungendogli al loro nome il suffisso suffix e, se dir nn e' specificata allora lo fa' per la directory corrente. Ho pensato 2 soluzioni: una che vede quanti file ci sono in dir e li scorre ognuno cambiando il nome col comando mv, solo che non ho idea di come contare i file. Mi viene in mente di usare il comando ls, ma nn saprei come applicarlo. Un altra soluzione sarebbe quella di usare un comando che modifichi in blocco tutti i nomi di file, per esempio il comando rename, che cmq nn credo faccio al caso mio... Sono ben accetti consigli e suggerimenti, vi ringrazio in anticipo. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
se usi l'operatore * la modifica verrà eseguita su tutti gli elementi.
per esempio mv /tmp/* /usr/local/tmp sposta tutti gli elementi in tmp nella seconda cartella (ora non sono sicurissimo al 100% della correttezza della mia riga, ma l'operatore * ti può aiutare di certo) poi per la modifica del nome penso che dovresti usare concat |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 119
|
Grazie per l'aiuto! Si, avevo in mente una cosa del genere, ma nn trovavo nessun comando che mi consentisse di scrivere "in append". Per quanto riguarda questo comando concat, la bash mi dice command not found, e guardando in rete mi sembra piu' una funzione c... Nn saprei come usarlo!
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
ah si non avevo prestato attenzione che è una basic shell....
beh allora puoi salvare le stringhe in variabili e fare così Codice:
$var1 = uno $var2 = due $var3 = $var1$var2 |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 119
|
resta il problema che nn so' come trovare il numero di file nella directory, per fare il while...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2007
Città: Bergamo
Messaggi: 307
|
Il ciclo sui file lo puoi fare cosi:
Codice:
for file in `ls -1 $DIR`
do
echo $file
done
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
scusami ma non capisco che file hai e come vuoi modificarli
puoi fare un esempio concreto? tipo file.txt deve venire ciao.txt grazie
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Codice:
for file in $DIR/*; do
mv ${file} "${file}${append}"
done
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
uhm forse sto capendo
ti butto giù 2 idee crei lo script modify.sh, che richiamerai con modify.sh [suffisso] [dir] all'interno andrai a scrivere qualcosa del genere SUFFISSO=$1 DIR=$2 if [ '$DIR' = '' ] then $DIR=`pwd` fi cd $DIR for file in `ls` ;do echo $file done ##### intanto guarda se va poi vediamo il mv
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 119
|
Vi ringrazio tutti per l'aiuto. Ora nn posso pero' provare gli aiuti perche' ho altri lavori da fare, ma appena lo faccio vi posto il risultato. Grazie ancora.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:44.




















