Corsi on-line

Cancellare tutti i file presenti in una directory via script shell

Gli utilizzatori del Terminale in ambiente Linux sanno che find è un comando disponibile nei sistemi operativi Unix (e Unix-like, come appunto le distribuzioni basate sul Kernel Linux) che svolge il compito di ricercare file e directory all’interno di un file system sulla base di criteri specificati attraverso dei pattern, come dei semplici nomi o stringhe basate sulle espressioni regolari. Find ha anche l’utilità di poter essere utilizzato per lanciare istruzioni in base ai risultati ottenuti dalle ricerche.

linux-logoSe per caso volessimo cancellare tutti i file con estensione “.txt” presenti all’interno di una directory denominata “Agenda”, sarà possibie utilizzare un comando come il seguente:

find ~/Agenda -type f -name "*txt" -print0 | xargs -0 rm

Sostanzialmente tale istruzione riuscirà a rilevare la directory “Agenda” a partire dalla directory “/home” dell’utente corrente (attraverso la tilde, “~”, che rappresenta quest’ultima), fatto questo rileverà tutti i file “.txt” della cartella e li rimuoverà tramite il comando rm.

Ora, se tale istruzione dovesse essere ripetuta frequentemente, potrebbe essere buona norma utilizzare uno script shell come quello proposto di seguito:

#!/bin/sh
# Cancellazione dei TXT da Agenda

echo "Stai per rimuovere i file TXT dalla directory ~/Agenda"
echo -n "Vuoi proseguire? (s/N): "
read -r conferma

if [ "$conferma" = s ]; then
  find ~/Agenda -type f -name "*txt" -print0 | xargs -0 rm
else
  echo "Impossibie eseguire il comando"
fi

Da notare come in questo caso sia stato possibile anche definire una richiesta di conferma della cancellazione per rendere più sicuro l’utilizzo della nostra applicazione.

Post correlati
I più letti del mese
Tematiche