View Full Version : funzione per script...........
stefanoxjx
22-04-2004, 16:25
dovrei creare uno script che in automatico mi rinomini i nomi di file togliendo l'estensione (.plt) o togliendo una certa parte del nome di un file.
Esiste una funzione apposita o devo creare un programma ad-hoc in C?
Grazie delle info.
Ciao.
sicuramente si puo fare in modi piu semplici...
#!/bin/sh
for i in `ls`; do
echo $i | awk -F "." '{mv $i $1}'
done;
attento che se il file è invece una dir da qualche problema
Questo vale solo per l'estensione per la parte del nome del file devi giochicciare con non ricordo che comando
ah questo vale solo per l'estensione per la parte del nome del file devi giochicciare con non ricordo che comando
stefanoxjx
22-04-2004, 22:30
Perchè non mi funziona :cry:
Questo è lo script che ho creato:
#!/bin/sh
for i in 'ls'; do
echo $i | awk -F "." {mv $i $1}
done;
e questo è il risultato quando lo lancio:
awk: cmd. line:2: (END OF FILE)
awk: cmd. line:2: syntax error
Purtroppo la pagina man di awk è in inglese e non proprio ben fatta, non riesco a capire na mazza di quello che mi vogliono spiegare su quella pagina.
Generalmente riesco a capirne qualcosa, ma con quella di awk proprio non capisco nulla.
:cry:
Che tu sappia, esiste una guida in Italiano fatta bene che spieghi la sintassi segli script e i vari comandi?
Grazie della disponibilità.
Non funziona perche' usi gli accenti sbagliati.
Confronta questi due:
' `
Il secondo e` quello giusto. Su una tastiera ita si fa con AltGr+?
Al massimo copia e incolla l'esempio di e-Tip.
Guldo
p.s.: una guida in italiano la trovi negli "appunti di informatica libera" di daniele giacomini.
:ave:
due errorini
il primo te l'ha detto guldo76
il secondo manca questo ' prima e dopo {mv $i $1}
io ho scritto '{mv $i $1 }' tu hai scritto solo {mv $i $1} aggiungili:)
stefanoxjx
23-04-2004, 14:51
Problema apostrofi, risolto.
Ho cambiato gli apostrofi e adesso quando eseguo lo script termina senza nessun errore, però senza nemmeno fare quello che in teoria dovrebbe fare.
Ho provato a lanciare manualmente il seguente comando:
echo pippo.plt | awk -F "." '{echo $1}'
e mi ripresenta il prompt senza nessuna risposta.
In teoria (se non mi sono dimenticato qualcosa) con questo comando dovrebbe restituirmi "pippo", sempre ammesso che non stia vaneggiando :D
Grazie ancora per la disponibilità.
se al posto di echo metti print restituisce pippo:)
stefanoxjx
23-04-2004, 17:27
Ho preso lo script e al posto di 'mv' ci ho messo 'print', il risultato è questo:
la cartella contiene i seguenti file:
-rw-r--r-- 1 stefano users 0 Apr 22 22:22 123
-rwxrwxrwx 1 stefano users 68 Apr 23 17:23 aaa
-rwxr-xr-x 1 stefano users 75 Apr 23 17:20 bbb
-rw-r--r-- 1 stefano users 3 Apr 22 22:13 pippo.plg
-rw-r--r-- 1 stefano users 3 Apr 22 22:13 pippo1
-rw-r--r-- 1 stefano users 4 Apr 22 22:13 pippo3.shl
Se lancio lo script modificato con print il risultato è questo:
123123
aaaaaa
bbbbbb
pippo.plgpippo
pippo1pippo1
pippo3.shlpippo3
Questo risultato mi ha fatto capire che il comando awk effettivamente fa il suo dovere ma sembra che il problema stia proprio nel comando {mv $i $1}.
Visto che lo script con print mi fa vedere i nomi dei file attaccati ho provato a modificare in questo modo {mv $i " " $1} pensando che passasse in maniera errata gli argomenti a mv, ma non è servito a nulla.
Come altra prova, ho provato a mettere davanti a mv il percorso completo (/bin/mv), ma senza nessun risultato positivo.
Quello che mi domando è: se {print $i $1} funziona, perchè {mv $i $1} non deve funzionare?
:confused: :confused: :confused: :confused:
stefanoxjx
26-04-2004, 21:17
up
come complicarsi la vita quando e` semplice...
x cambiare le estensioni o una parte del nome (che e` la stessa cosa):
$ rename '.ext1' '.ext2' *
togliere le estensioni o una parte (che e` la stessa cosa):
$ rename '.ext' '' *
ecc...
infatti
sicuramente si puo fare in modi piu semplici...
stefanoxjx
27-04-2004, 12:19
ma purtroppo io non sono certo che ext1 o ext2 abbiano sempre lo stesso valore, altrimenti l'avrei già fatto :(
Ciao.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.