Per zippare un gran numero di file con nomi simili (es. log) usare la seguente procedura: for pippo in $(ls audit.*.log); dogzip $pippodone
Categoria:BASH
Trovare file entro un intervallo di date
Per trovare i file compresi tra due date usare il comando find con la seguente sintassi: find <path_to_search> -type f -newermt “2024-06-01” ! -newermt “2024-06-30”
Cercare e rimuovere file
Nel caso in cui si debbano cancellare dei file contenuti in cartelle in base ad un pattern usare il seguente comando: find . -type f -name “log20230*.txt” -print0 | xargs -0 rm
Trovare file con nome differente da pattern
Per trovare tutti i file in una data directory con nome differente da un certo pattern usare il seguente comando: find . -not -name *.txt L’esempio cercherà nella directory corrente, ed in tutte le sottodirectory, tutti i file che non terminano con *.txt
Estrarre righe
Estrarre dalla riga 5 alla riga 10 del file pippo.txt: sed -n 5,10p pippo.txt Estrarre dalla riga 5 alla 10 e poi la 15 sed -n -e 5,10p -e 15p pippo.txt
Calcolare dimensione totale file da elenco
ls -lnk $(cat <elenco file>) | awk ‘{print $5}’ | awk ‘{total += $1}; END {print total}’
Estrarre campi da un file delimitato
Avendo un file contenente colonne delimitate per estrarre la singola colonna procedere come segue: Es: pippo=”d_ricevute_pec – lk_allegati : ;/opt/documentale/m_pi/2018/07/17/14/27/3e1f8acd-be81-4f15-a646-2fa39cfa5605.bin” echo $pippo | awk -F “;” ‘{print $2}’
Trovare file di una data dimensione
Esistono due metodi: find <path> -type f -size <size> ls -l <path> | awk ‘{if ($5 == <size>) print $9}’
Data in Italiano
Per ottenere la data in Italiano all’interno di uno script usare la seguente sintassi: data=$(LC_TIME=’it_IT.utf8′ date) echo $data
Estrarre un numero da una stringa
$ NUMERO=$(echo “Ho 999 anni.” | tr -dc ‘0-9’) $ echo $NUMERO. 999. $ NUMBER=$(echo “Ho 999 anni.” | sed ‘s/[^0-9]*//g’) $ echo $NUMERO. 999. $ STRING=”Ho 999 anni.” $ echo “${STRING//[!0-9]/}” 999. O. $ echo “${STRING//[^0-9]/}” $ NUMERO=$(echo “Ho 999 anni.” | grep -o -E ‘[0-9]+’) $ echo $NUMERO. 999.