Suddividere i file in cartelle

Come suddividere gruppi di file in cartelle specifiche.

A cura di Totò Fiandaca  | issue #172 | guida/e Andrea Borruso Totò Fiandaca


Introduzione

A partire da una cartella che contiene circa 6000 file SVG: i nomi dei file hanno un prefisso ( es: google, apple ecc…) seguito da un trattino - e da una successiva descrizione (google-translate.svg, google-street-view.svg, apple-safari.svg, apple-keyboard-option.svg ecc…), come creare tante cartelle quante sono i prefissi e con stesso nome, e copiarci dentro tutti i file che hanno quel prefisso.

Script bash

#!/bin/bash
set x

# lista i file *.svg, estrae il prefisso, prendi i valori univoci e crea file 
ls *.svg | sed -E 's/^(\w+).+$/\1/g' | uniq >prefisso.csv

# cicla per creare le cartelle e copiare i file
for i in $(cat prefisso.csv);do
	mkdir -p $i
	cp $i*.svg ./$i
done

Note:

  • in sed l’opzione -E è obbligatoria per usare regex complessi, per i gruppi
  • in sed, \1 richiama il primo gruppo

Riferimenti

Ultima modifica 06/01/2021: add ricetta (6e04fd4)