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.

Questa voce è stata pubblicata in Uncategorized e contrassegnata con , , , . Contrassegna il permalink.

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

  1. mamozzi ha detto:

    Anch’io l’ho scoperto su un sito (http://bashcurescancer.com/10-steps-to-beautiful-shell-scripts.html) prima di scoprire che c’è anche nella man page di Bash. Si rivelano comodissimi, non serve passare per sed o awk per fare le operazioni principali su una variabile.
    P.S. Comunque la parte ” filename=${file##*/}” puoi risparmiartela, c’è il comando “basename” che fa proprio questo.
    Ciao e complimenti per il blog, ci sono un sacco di cose interessanti!

  2. Alfredo ha detto:

    Ciao, sto cercando di fare uno script che rinomini i file e sto provando una cosa del genere
    #!/bin/bash

    echo -n “Cosa vuoi mettere d’avanti ad i file da rinominare? ”
    read var

    for i in *.jpg mv $var; done

    Ma aggiunge nuovamente l’estensione.
    Ho provato ad adattare il tuo ciclo for, ma non va😦
    Mi sai aiutare, grazie e buon inizio anno😉

  3. Luigi De Marco ha detto:

    E’ inutile fare tutto sto casino, basta usare sed.
    nome=$(echo -n $nomefile | sed ‘s|\.[A-Za-z0-9]*||g’)
    estensione=$(echo -n $nomefile | sed ‘s|[A-Za-z0-9]\.||g’)

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...