Извлечь каталог из пути - PullRequest
100 голосов
/ 28 июня 2011

В моем скрипте мне нужен каталог файла, с которым я работаю. Например, file = "stuff / backup / file.zip" . Мне нужен способ получить строку " stuff / backup / " из переменной $file.

Ответы [ 5 ]

169 голосов
/ 28 июня 2011
dirname $file

это то, что вы ищете

42 голосов
/ 28 июня 2011
dirname $file

выдаст

stuff/backup

, что противоположно basename:

basename $file

выдаст

file.zip
2 голосов
/ 21 сентября 2018

Использование ${file%/*}, как предложено Urvin / LuFFy, технически лучше, поскольку вы не будете полагаться на внешнюю команду. Чтобы получить базовое имя таким же образом, вы можете сделать ${file##*/}. Нет необходимости использовать внешнюю команду, если вам не нужно.

file="/stuff/backup/file.zip"
filename=${1##*/}     # file.zip
directory=${1%/*}     # /stuff/backup

Это также будет полностью соответствовать POSIX. Надеюсь, поможет! : -)

1 голос
/ 11 июля 2018

Для получения directorypath от filepath:

file="stuff/backup/file.zip"
dirPath=${file%/*}/
echo ${dirPath}
1 голос
/ 28 июня 2011

Просто используйте $ dirname /home/~username/stuff/backup/file.zip

Вернется /home/~username/stuff/backup/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...