Scripting BASH –
Modifica e ricerca dei testi su Linux con find, grep, awk e xargs
Quando si lavora spesso al terminale, Bash diventa molto più di una shell: è il punto di partenza per automatizzare attività ripetitive, ridurre gli errori manuali e standardizzare procedure che altrimenti richiederebbero troppo tempo.
Ricerca di informazioni
Su Linux, una delle combinazioni più utili è quella tra find e grep, perché permette di localizzare file e contenuti in modo mirato.
Per esempio, puoi cercare tutti i file modificati di recente oppure individuare una stringa precisa dentro una directory senza aprire ogni file uno per uno.
find /var/log -type f -name "*.log" -mtime -7
grep -RIn --exclude-dir=.git "ERROR" /etc
find /home/utente/Documenti -type f -name "*.txt" -print
Il comando find è prezioso perché filtra per nome, tipo, dimensione e data di modifica, ma diventa ancora più potente quando lo combini con xargs.
Questo approccio serve per applicare un comando a molti file senza scrivere cicli complessi.
L’attenzione importante è usare sempre la variante sicura con `-print0` e `xargs -0` quando i nomi possono contenere spazi o caratteri speciali: in questo modo eviti quasi tutti i problemi tipici dell’elaborazione batch.
find /var/www -type f -name "*.php" -print0 | xargs -0 grep -n "mysqli"
find /tmp/report -type f -name "*.csv" -print0 | xargs -0 wc -l
find /home/utente/Immagini -type f -name "*.jpg" -print0 | xargs -0 ls -lh
Modificare i testi
Per le trasformazioni del testo, sed e awk sono due strumenti complementari.
sed è ideale per sostituire stringhe, cancellare righe o fare piccole normalizzazioni sui file; awk è più adatto quando devi estrarre colonne o rielaborare dati strutturati, ad esempio log o elenchi separati da spazi, virgole o due punti.
In un flusso di automazione reale, spesso i due comandi lavorano insieme: prima filtri, poi trasformi il contenuto, infine salvi il risultato in un file pulito e leggibile.
sed 's/vecchio/nuovo/g' file.txt
awk -F: '{print $1, $3}' /etc/apt/sources.list
awk '{sum += $1} END {print sum}' numeri.txt
sed -n '1,10p' /var/log/nome.log
Conclusione
Automatizzare con Bash non significa scrivere script lunghi o complicati: spesso basta saper combinare bene pochi strumenti solidi come i diffusi find, grep, xargs, sed e awk.
La regola migliore è partire da comandi piccoli, provarli su un sottoinsieme di file e aggiungere progressivamente l’automazione solo dopo aver verificato il risultato.
Così si ottiene un flusso di lavoro più veloce, ripetibile e molto più sicuro.
Â
Fonti e riferimenti:
– man find
– man grep
– man xargs
– man sed
– man awk
LICENZA E CONDIZIONI D’USO
Questo How-to è rilasciato sotto licenza Creative Commons Attribution-NonCommercial 3.0 Italy.Â
CONTATTI DELL’AUTORE
Marco Ciammella marco@orvietolinux.it
Orvieto Linux User Group info@orvietolinux.it