PDA

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.

e-Tip
22-04-2004, 16:31
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

e-Tip
22-04-2004, 16:33
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à.

guldo76
22-04-2004, 23:05
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:

e-Tip
22-04-2004, 23:24
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à.

e-Tip
23-04-2004, 16:17
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

Pardo
26-04-2004, 21:29
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...

e-Tip
26-04-2004, 22:05
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.