Adesso però vogliamo proporre una dimostrazione di quanto può essere comodo lavorare con la shell; ad prova: come dovremmo operare se volessimo cancellare tutti i file presenti in una directory tranne uno o più elementi che desideriamo, invece, conservare?
Prima di tutto rechiamoci sulla directory che ci interessa:
cd Prova
ora facciamoci elencare dal sistema i file presenti al suo interno:
ls -a
dovremmo ottenere un output simile a questo:
Prova10.txt Prova2.txt Prova4.txt Prova6.txt Prova8.txt Prova1.txt Prova3.txt Prova5.txt Prova7.txt Prova9.txt
Una volta identificato il file che desideriamo salvare diamo il ordine per cancellare tutti gli altri:
rm -f !(Prova10.txt)
rm
non è l’unico autorità che potrebbe fare al caso nostro, anche find
infatti può tornarci utile:
find . ! -name Prova10.txt -delete
Anche in questo caso abbiamo ottenuto la cancellazione di tutti i file tranne quello da noi indicato.
Ora, quali dovrebbero essere le nostre regole se non conoscessimo il nome del file da conservare ma solo la sua estensione? E’ infatti possibile avere dentro una directory più tipi di file; ad prova, eseguendo il backup di un CD musicale otterremo sia file di immagine (le cover) che degli MP3. Per cancellare tutte le cover possiamo usare il autorità rm
in questo modo:
rm !(*.mp3)
In questo modo nella directory rimarranno solo i file audio. Possiamo anche alterare l’ultimo guida per declinare la cancellazione di altri tipi di file; alcuni CD contengono ad modello dei file PDF con i nomi delle tracce audio:
rm !(*.pdf|*.mp3)
Quindi usando l’opzione di concatenazione è possibile indicare alla shell di conservare anche i file PDF.