Fabrizio Russo Operazioni massive su files


2012/10/12   Operazioni massive su files

Spesso in linux è necessario effettuare operazioni massive su file infatti frequentemente mi trovo a dover cancellare o spostare files massivamente cioè attraverso regular expression.

Ecco quindi un paio di comodi script che fanno tutto il lavoro sporco

 

Cancellazioni di files:


find . -name "*.bak" -exec rm {} \; 
	

 

Cancellazione (o spostamento) di files:


find . -name "*.avi" -print0 | xargs -I{} -0 mv -v {} ./myAVI
	

 

Eliminare gli spazi dai nomi dei files:


find . -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;
	

L’idea alla base di questo script è piuttosto semplice: Cercando tutti i file (comando find), a partire dalla directory corrente (.) che hanno un nome tipo “qualsiasi cosa + spazio + qualsiasi cosa” (quindi almeno uno spazio) eseguire su di essi il comando rename che tramite una regular expression sostituisce tutte le occorrenze del carattere spazio con il carattere underscore.

 

Cancellare i file piu' vecchi di una certa data:


find . -name "*.pdf" -not -newermt "2013-03-26 1000" -exec rm {} \;
	

L'opzione newermt del comando find consente di filtrare per i files più recenti di una certa data, usando il parametro not si può ottenere l'effetto inverso e cioè cercare i files che sono più vecchi di una data di riferimento.
L'esempio cerca e cancella tutti i file PDF con data di creazione precedente al 26/03/2013 ore 10.00. :-)