Pagina 1 di 1

Piccolo script per tagliare/rinomire files

Inviato: dom 1 ott 2006, 11:19
da EmaDaCuz
Mi servirebbe creare una lista di alcuni file per avere una sorta di "catalogo".
I nomi di questi file hanno tutti una struttura comune

Codice: Seleziona tutto

[INTESTAZIONE] [Parte1-Parte2].[ESTENSIONE]
Vorrei arrivare ad avere solo la [Parte1-Parte2],senza estensione e senza intestazione.
Ho provato con

Codice: Seleziona tutto

awk '{ print $4 $5 $ $6 $7 $8  $9 $10 $11 }' <lista >prova.txt
ma mi elimina gli spazi tra le parole e rimane l'estensione.
Grazie mille,sperando in qualche dritta.

Inviato: dom 1 ott 2006, 12:10
da Paoletta
piccola dritta

Codice: Seleziona tutto

parte=`echo INTESTAZIONEParte1-Parte2.ESTENSIONE | grep -o Parte1-Parte2` 
mv INTESTAZIONEParte1-Parte2.ESTENSIONE $parte
se ho tempo e mi dici esattamente che devi fare te lo scrivo io..

Inviato: dom 1 ott 2006, 17:53
da IceSlack
esisteva mmv anche s enon l'aggiornano dal 2001 funziona a meraviglia.........

Inviato: dom 1 ott 2006, 19:50
da EmaDaCuz
grazie paoletta

Allora,il nome dei file è sulla falsariga fi questo

Codice: Seleziona tutto

[tesi - marco] Carbonio 13 - Teo 7ch2oh.xyz
E vorrei arrivare a

Codice: Seleziona tutto

Carbonio 13 - Teo 7ch2oh
Non è urgente,ma se riuscite a darmi una mano.... :oops:

Inviato: dom 1 ott 2006, 20:05
da absinthe
la butto lì in uno stato semi-comatoso e da win-xp (se funziona pretendo il nobel :P):

Codice: Seleziona tutto

EXT="tua_estensione"

for FILE in $LISTA_FILE; do

    NAME=$(basename $FILE $EXT) #toglie l'estensione
    NAME=$(cut -f2 -d \] $NAME) #toglie le parentesi quadre
    NAME=${NAME:1} #toglie lo spazio che precede "Carbonio"
done
in realtà basterebbe sostituire le ultime 2 riche con :

Codice: Seleziona tutto

NAME=${NAME:16}
se il testo nelle quadre è sempre lo stesso...

buonappetito :)
M

edit-----------------

però va aggiunto un altro comando alla fine del ciclo:

Codice: Seleziona tutto

mv $FILE $NAME
se no è inutile .

Inviato: lun 2 ott 2006, 14:05
da Paoletta
anche io ti do la mia dritta (ormai ho promesso...);
ti conviene dargli un nome senza estensione (altrimenti si rinomina da solo) :D

Codice: Seleziona tutto

#!/bin/bash

before="\[.*\] " #regexp intestazione
ext="\.*" #regexp estensione

ls -1 > fileScript 
while read lista_file #per nomi con gli spazi
do
    nome=$(echo "$lista_file" | sed "s/$before//g")
    nome=$(echo "$nome" | sed "s/$ext//g")
    if [ "$lista_file" != "$nome" ];then
        mv "$lista_file" "$nome"
    fi
done<fileScript
rm fileScript

Inviato: lun 2 ott 2006, 15:49
da EmaDaCuz
OK,grazie mille adentrambi.Adesso vedo se funziona.