Si tu veux récupérer juste le nom du fichier, tu as basename.
Exemple :
$ dirname /un/long/chemin/vers/toto.txt
/un/long/chemin/vers
$ basename /un/long/chemin/vers/toto.txt
toto.txt
Pour avoir l'extension, le truc, c'est que les extensions n'ont aucun intérêt sous GNU/Linux.
Mais avec sed, tu peux avoir tout ce qui suit la dernière occurence de "."
Mais là, je suis pas assez calé pour te donner la commande
En cherchant un peu j'ai trouvé :
echo toto.doc.txt | sed 's/.*\.//g'
donc en gros tu peux faire un script dans lequel tu mets :
#!/bin/bash
echo $1 | sed 's/.*\.//g'
Il faut rendre le scipt exécutable :
chmod +x tonscript
puis tu fais un lien de ton script dans /usr/bin :
ln -s /chemin/de/ton/script /usr/bin/getextension
Puis tu peux ensuite faire :
getextension <Unfichier>