Spostare i file di tante cartelle in una sola directory

29 giugno 2017

Di recente ho avuto l’esigenza di raggruppare tutti i file contenuti all’interno di molte cartelle, in una sola directory. Ovviamente non potevo mettermi ad aprire ogni cartella e spostare il file, quindi come fare?

Per chi usa sistemi dotati di una shell avanza come ad esempio Bash, è davvero facile compiere operazioni di questo genere.

Bash è una shell di testo derivante dal progetto GNU, usata principalmente nei sistemi operativi Unix-like, e in particolar modo in GNU/Linux, ma anche chi usa Windows può utilizzarla grazie ai numerosi porting che sono stati fatti per i sistemi Microsoft.

In sostanza Bash è un interprete di comandi che ci permette di “parlare” con il sistema operativo grazie a una serie di funzioni predefinite. Una delle cose che rende Bash potente è la possibilità di eseguire i comandi che le vengono passati, utilizzando la redirezione dell’input e dell’output per eseguire più programmi in cascata; questo vuol dire che possiamo passare l’output del comando precedente come input del comando successivo.

Tornando a ciò che dobbiamo fare, Bash mette a disposizione anche un linguaggio di scripting grazie al quale si possono risolvere problemi anche piuttosto complessi grazie all’utilizzo di variabili, strutture di controllo di flusso e funzioni.

Per spostare i file in maniera ricorsiva, da tante sotto cartelle a una sola, ci aiuta il comando find in questo modo:

find sfoglia ricorsivamente il contenuto della cartella “directory_di_partenza” e per ogni elemento trovato esegue il comando “mv”. La sintassi {} viene sostituita con il nome del file.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *