|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
funzione per script...........
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. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2003
Città: /dev/zero
Messaggi: 666
|
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
__________________
Powered By Imac 27" , iPhone X and watch Series 5 Si sono un apple fan ![]() Ultima modifica di e-Tip : 22-04-2004 alle 22:24. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2003
Città: /dev/zero
Messaggi: 666
|
ah questo vale solo per l'estensione per la parte del nome del file devi giochicciare con non ricordo che comando
__________________
Powered By Imac 27" , iPhone X and watch Series 5 Si sono un apple fan ![]() Ultima modifica di e-Tip : 22-04-2004 alle 15:35. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
Perchè non mi funziona
![]() 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. ![]() Che tu sappia, esiste una guida in Italiano fatta bene che spieghi la sintassi segli script e i vari comandi? Grazie della disponibilità. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
Non funziona perche' usi gli accenti sbagliati.
Confronta questi due: Codice:
' ` 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. ![]()
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2003
Città: /dev/zero
Messaggi: 666
|
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 ![]()
__________________
Powered By Imac 27" , iPhone X and watch Series 5 Si sono un apple fan ![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
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 ![]() Grazie ancora per la disponibilità. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Aug 2003
Città: /dev/zero
Messaggi: 666
|
se al posto di echo metti print restituisce pippo
![]()
__________________
Powered By Imac 27" , iPhone X and watch Series 5 Si sono un apple fan ![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
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? ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
up
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Dec 2000
Messaggi: 1187
|
come complicarsi la vita quando e` semplice...
x cambiare le estensioni o una parte del nome (che e` la stessa cosa): Codice:
$ rename '.ext1' '.ext2' * togliere le estensioni o una parte (che e` la stessa cosa): Codice:
$ rename '.ext' '' * ecc... |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Aug 2003
Città: /dev/zero
Messaggi: 666
|
infatti
Quote:
__________________
Powered By Imac 27" , iPhone X and watch Series 5 Si sono un apple fan ![]() |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
ma purtroppo io non sono certo che ext1 o ext2 abbiano sempre lo stesso valore, altrimenti l'avrei già fatto
![]() Ciao. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:18.