Linux - Bash - Rinominare molti file insieme
Rename
Uso Base:
rename perlexpr [ files ]
rename è uno script perl che può essere usato per rinominare molti file in base ad una espressione regolare.
L’argomento perlexpr è un’espressione Perl che si preve modifichi la stringa $ _ in Perl per almeno alcuni dei nomi di file specificati. Se un nome di file specificato non viene modificato con l’espressione, non verrà rinominato. Se non sono riportati nomi di file sulla riga di comando, i nomi dei file verranno letti attraverso lo standard input.
Quindi, nel nostro caso potremmo usare
rename 's/.sh/.sh.bak/g' *.sh
L’espressione 's/.sh/.sh.bak/g' significa:
s=sostituisci.
/.sh/=stringa da cercare per la sostituzione.
/.sh.bak/ = nuova stringa che verrà messa al suo posto.
g=globale, fa questo per tutte le occorrenze della stringa.
Questo sostituirà la stringa sh a sh.bak, quindi dovremo ottenere esattamente quello che vogliamo:
anotherfile.sh.bak
myconf.sh.bak
myfile2.txt
test.sh.bak
mmv
mmv, è un programma per spostare/copiare/aggiungere/collegare più file in base a una serie di caratteri jolly. Questa azione multipla viene eseguita in modo sicuro, cioè senza cancellazione inaspettata di file a causa di collisioni di nomi di destinazione con nomi esistenti o con altri nomi di destinazione. Inoltre, prima di fare qualsiasi cosa, MMV tenta di rilevare eventuali errori che potrebbero derivare dalla intera serie di azioni che sta per fare ed offre all’utente la possibilità di scegliere se abortire prima di cominciare, o procedere evitando le parti che causano questi problemi.
Questo comando ha molte opzioni che possono fare le cose differenti, come muoversi nelle sottodirectory e fare una copia di sicurezza di tutti i file che toccano, ma per il nostro piccolo esempio si può semplicemente utilizzare questo comando:
mmv \*.sh \#1.sh.bak
Bash Magic
Con i comandi bash si può fare quasi tutto in molti modi diversi, quindi mi limiterò a mostrare 1 modo semplice per rinominare più file usando il comando standard mv .
for i in *.sh;
do mv $i `basename $i sh`sh.bak;
done
Questo piccolo esempio utilizza il comando basename, che stampa il nome del file specificato nell’argomento con tutte le componenti di directory iniziali rimosse e in questo caso rimuove il suffisso finale, aggiungendone al file un altro.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ESEMPI RENAME
------------------------
rename 's/\(by\.Roy\.Ita\.Neri\.Comics\.Fumetti\)\.//g' *.cb?
rename 's/\(\.//g' *.cb?
rename 's/\.-\./\./g' *.cb?
rename 's/Diabolik\
/Diabolik\./g' *.cb?
rename 's/\ -\
/\./g' *.cb?
rename 's/\.\./\./g' *.cb?
rename 's/\[300dpi\]\ //g' *.cb?
rename 's/\(Pollicino63\)\.//g' *.cb?
rename 's/\(by\.Deny\)\.//g' *.cb?
rename 's/\ fix\ by\ lvii//g' *.cb?
rename 's/foundbycrick\.//g' *.cb?
rename 's/\ \[by\ Full\ HD\]//g' *.cb?
rename 's/\.\[by\ Full\ HD\]//g' *.cb?
rename 's/\ \(Lu\)//g' *.cb?
rename 's/\(Found\.c2c\)\.//g' *.cb?
rename 's/\(Found\.Edit\.By\.Mister\.No\)\.//g' *.cb?
rename 's/\(By\.Roy\.c2c\)\.//g' *.cb?
rename 's/\(Scan\.Truentum59\.Edit\.By\.Roy\)\.//g' *.cb?
rename 's/\(Scan\.by\.Sixi\.Riedit\.By\.Roy\)\.//g' *.cb?
rename 's/\(By\.Roy\.\&\.Aquila\)\.//g' *.cb?
rename 's/\(By\.Roy\.\&\.Aquila\.c2c\)\.//g' *.cb?
rename 's/\.\!\./\./g' *.cb?
rename 's/\(A\.Colori\.Scan\.Truentum59\.Edit\.By\.Roy\)\.//g' *.cb?
rename 's/\(by\.Aquila\.e\.Roy\.Italia\-DCP\)\.//g' *.cb?
rename 's/\(No\.c2c\)\.//g' *.cb?
rename 's/\(By\.Roy\.\&\.Aquila\)\)\.//g' *.cb?
rename 's/\(Jpeg\.version\.by\.Sixi\)\.//g' *.cb?
rename 's/\(Riedit\.By\.Roy\)\.//g' *.cb?
rename 's/\ \(By\ Roy\ \&\ Aquila\)//g' *.cb?
rename 's/\(Aquila\.mibrun1\)\.//g' *.cb?
rename 's/\(c2c\-HQ\)//g' *.cb?
rename 's/\(Aquila\.Mibrun1\)\.//g' *.cb?
rename 's/\(Aquila\.e\.Tura\.max\.Italia\-DCP\)\.//g' *.cb?
rename 's/Byn1\.//g' *.cb?
rename 's/\(c2c\)//g' *
rename 's/\(Aquila\.E\.Tura\.Max\.Italia\-Dcp\)\.//g' *.cb?
rename 's/\ \(By\ gatto\-Edit\ by\ Gitra\)\.//g' *.cb?
rename 's/\(Roy\)\.//g' *.cb?
rename 's/\(By\.Roy\.\&\.Mister\.No\.Fix\)\.//g' *.cb?
rename 's/\(By\.Mister\.No\.\&\.Roy\)\.//g' *.cb?
rename 's/fix\ by\ lvii//g' *.cb?
rename 's/\(Mister\.No\.c2c\)\.//g' *.cb?