Piccolo script per tagliare/rinomire files

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
EmaDaCuz
Linux 3.x
Linux 3.x
Messaggi: 877
Iscritto il: sab 28 gen 2006, 15:47
Slackware: 12.0 - ma a Trieste
Kernel: 2.6.25
Desktop: Fluxbox
Distribuzione: Debian e Arch
Località: Nijmegen, NL
Contatta:

Piccolo script per tagliare/rinomire files

Messaggio 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.

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio 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..

Avatar utente
IceSlack
Linux 4.x
Linux 4.x
Messaggi: 1313
Iscritto il: dom 30 ott 2005, 13:27

Messaggio da IceSlack »

esisteva mmv anche s enon l'aggiornano dal 2001 funziona a meraviglia.........

Avatar utente
EmaDaCuz
Linux 3.x
Linux 3.x
Messaggi: 877
Iscritto il: sab 28 gen 2006, 15:47
Slackware: 12.0 - ma a Trieste
Kernel: 2.6.25
Desktop: Fluxbox
Distribuzione: Debian e Arch
Località: Nijmegen, NL
Contatta:

Messaggio 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:

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio 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 .
Ultima modifica di absinthe il lun 2 ott 2006, 14:08, modificato 1 volta in totale.

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio 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

Avatar utente
EmaDaCuz
Linux 3.x
Linux 3.x
Messaggi: 877
Iscritto il: sab 28 gen 2006, 15:47
Slackware: 12.0 - ma a Trieste
Kernel: 2.6.25
Desktop: Fluxbox
Distribuzione: Debian e Arch
Località: Nijmegen, NL
Contatta:

Messaggio da EmaDaCuz »

OK,grazie mille adentrambi.Adesso vedo se funziona.

Rispondi