Quick Bash Tip: come estrarre nome file ed estensione da un path

Continuano le piccole note di bash. Stavolta vediamo un paio di facili comandi per estrarre nome file ed estensione da un path. Inserisco il tutto in un piccolo script che analizza tutti i file nella directory corrente e ne stampa prima il nome e poi l’estensione.

for file in $(ls) ; do
  filename=${file##*/}
  basename=${filename%\.*}
  extension=${filename##*.}
  echo Nome: ${basename}, estensione: ${extension}
done

Ulteriori informazioni (per i non deboli di cuore) a questo indirizzo.

Quick tip: come splittare un file in più parti

Piccolo suggerimento su come suddividere un file in più parti di dimensione nota: il comando SPLIT, disponibile su Linux e Mac Os X.

split -b DIM FILE PREFISSO

l’opzione -b serve a specificare la dimensione dei componenti da creare (in byte). Si possono usare anche i suffissi b (512 byte), k (1 kb) e m (1 Mb). Ad  esempio, se scrivo “-s 4k” significa che voglio frammenti di 4 kbyte l’uno.

FILE è il nome del file da scomporre

PREFISSO è il prefisso con il quale verranno chiamati i frammenti creati, che di default saranno una cosa del tipo PREFISSOaa, PREFISSO ab, PREFISSOac, PREFISSOad… ecc… volendo è possibile intervenire con le opzioni -a (imposta la lunghezza del suffisso, che di default è 2) e -d (suffissi numerici invece che letterali).

Esempio: mi serve dividere il file bob.dat in frammenti di 4Kb da dare in pasto a un altro programma per un’analisi statistica:

split -s 4k bob.dat bob

I frammenti si chiameranno bobaa, bobab, bobac, bobad, ….. e così via fino alla fine del file (o fino a bobzz, dopodichè lo split si blocca perchè ha finito lo spazio dei nomi; si può ovviare con l’opzione -a).

Per ulteriori informazioni:

split --help

Saluti!

Quick Hint: set path on unix system

Piccolo promemoria per me che sono sbadato: per aggiungere una directory al path in un sistema Unix (ovviamente anche Mac Os X) basta editare (con sudo) il file /etc/bashrc e inserire la riga:

export PATH=”$PATH:/more/paths/:”

I puristi senz’altro faranno presente che esistono modi migliori e più ordinati, ma a me basta che funzioni :-)