[Linux-Biella] Espressioni regolari

Pasquale Scordino scordino.pasquale a gmail.com
Dom 23 Apr 2017 17:41:47 CEST


Il giorno 20 aprile 2017 19:37, Pasquale Scordino <
scordino.pasquale a gmail.com> ha scritto:

>
>
>> mmmmmm
>> pttmmv -s 'qqqq*_?_*.cvs' '2017_' '2017_0'
>>
>> ( http://www.paultt.org/downloads/scripts/pttmmv )
>>
>> ma cosi' risolveresti solo il mese ;)
>>
>>
>> mi sa che devi farti uno script apposta
>>
>> tipo
>>
>> for IN in qqqq*; do
>>
>> FIXED=`echo $IN | cut -d'_' -f 1-2`
>> MM=`echo $IN | cut -d'_' -f 3`
>> DD=`echo $IN | cut -d'_' -f 4 | cut -d'.' -f 1`
>> MM=`printf "%02d" $MM`
>> DD=`printf "%02d" $DD`
>>
>> mv $IN $FIXED"_"$MM"_"$DD".csv"
>>
>> done
>>
>>
> Mi sono studiato le espressioni regolari che non avevo mai usato. Devo
dire che dopo le prime 2000 imprecazioni ho capito la logica che ci sta
sotto.
Pertanto ho ottimizzato la risoluzione a step con uno script bash che
richiama il comando rename. Cosi con un colpo solo faccio tutto quello che
mi serve.

Posto lo script per chi interessa.

#!/bin/bash

#Stringhe per cambio nome files:

#Da: qqqq_2017_1_1.csv  a qqqq_20170101.csv

rename 's/(\w+)(_)(\d{1})(_)(\d{1}\.)/${1}0${3}0$5/' *.csv

#Da: qqqq_2017_1_11.csv a qqqq_20170111.csv

rename 's/(\w+)(_)(\d{1})(_)(\d{2}\.)/${1}0$3$5/' *.csv

#Da: qqqq_2017_11_1.csv a qqqq_20171101.csv

rename 's/(\w+)(_)(\d{2})(_)(\d{1}\.)/$1${3}0$5/' *.csv

#Da: qqqq_2017_11_11.csv a qqqq_20171111.csv

rename 's/(\w+)(_)(\d{2})(_)(\d{2}\.)/$1$3$5/' *.csv


Ciao e grazie a PaulTT per la risposta.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://list.bilug.it/pipermail/linux/attachments/20170423/ce0e920d/attachment.html>


Maggiori informazioni sulla lista Linux