Использование ${file%/*}
, как предложено Urvin / LuFFy, технически лучше, поскольку вы не будете полагаться на внешнюю команду. Чтобы получить базовое имя таким же образом, вы можете сделать ${file##*/}
. Нет необходимости использовать внешнюю команду, если вам не нужно.
file="/stuff/backup/file.zip"
filename=${1##*/} # file.zip
directory=${1%/*} # /stuff/backup
Это также будет полностью соответствовать POSIX. Надеюсь, поможет! : -)