web-dev-qa-db-fra.com

Extraire le répertoire du chemin

Dans mon script, j'ai besoin du répertoire du fichier avec lequel je travaille. Par exemple, le fichier = "stuff/backup/file.Zip". J'ai besoin d'un moyen d'obtenir la chaîne "stuff/backup /" à partir de la variable $file.

102
Matt
dirname $file

est ce que vous cherchez

172
Matthieu
dirname $file

va sortir

stuff/backup

qui est l'opposé de basename:

basename $file

serait sortie

file.Zip
42
matchew

Pour obtenir directorypath à partir de filepath:

file="stuff/backup/file.Zip"
dirPath=${file%/*}/
echo ${dirPath}
2
Urvin Shah

En utilisant ${file%/*} comme suggéré par Urvin/LuFFy est techniquement meilleur puisque vous ne comptez pas sur une commande externe. Pour obtenir le nom de base de la même manière, vous pouvez utiliser ${file##*/}. Il est inutile d'utiliser une commande externe à moins que vous n'en ayez besoin.

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

Il serait également entièrement conforme à POSIX de cette façon. J'espère que ça aide! :-)

2
MageParts

Utilisez simplement $ dirname /home/~username/stuff/backup/file.Zip

Il retournera /home/~username/stuff/backup/

1
Nishchay Sharma