lunedì, dicembre 13, 2010

Copia di massa ricorsiva

Ieri ho dovuto buttar giù queste due righe di script sotto linux per copiarmi tutte le immagini in tutte le sottocartelle che avevo in una directory. Non garantisco la compatibilità piena su OSX, anche se in teoria dovrebbe funzionare OOB.

Il primo step rinomina tutti i file togliendo le maiuscole, il secondo effettua la copia. Cambiate soltanto "backup_dir" mettendo il path assoluto alla destinazione della copia.


find . -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
find . -depth -name "*.jpg" -execdir cp {} /backup_dir/{} \;


Potete eseguire il codice da linea di comando oppure copiarvi le righe qui sotto in un file, dargli i permessi di esecuzione (chmod +x nome_file) ed eseguirlo

#!/bin/bash
echo "Renaming...."
find . -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
echo "Copying..."
find . -depth -name "*.jpg" -execdir cp {} /backup_dir/{} \;
echo "Done"

0 commenti ricevuti: