нуда... скобки забыл... fixed...
как без него?
вообще-то путь выделяется без слеша. Так проще потом с ним работать.
[console]ksu@ksu:~$ NAME="/a/b/c/d/e/file"
ksu@ksu:~$ echo "${NAME%/*}"
/a/b/c/d/e
[/console]
не написал раньше потому, что не знал, что вы хотите сделать (без скобок непонятно)
выделить имя файла можно так:
[console]ksu@ksu:~$ echo "${NAME##*/}"
file
[/console]
Ну и конечно
[console]ksu@ksu:~$ basename "$NAME"
file
ksu@ksu:~$ dirname "$NAME"
/a/b/c/d/e
[/console]
ЗЫЖ в первом варианте $TARGET_FILE_DIR не использовалась.
ЗЗЫЖ ответ на вопрос "зачем?" будет ясен после того, как вы сравните скорость моего и своего варианта хотя-бы даже на сотне файлов и каталогов.