96 votes

Comment obtenir le répertoire absolu d'un fichier en bash ?

J'ai écrit un bash script qui prend un fichier d'entrée comme argument et le lit.
Ce fichier contient certains chemins (relatifs à son emplacement) vers des fichiers supplémentaires utilisés.

Je voudrais que le script aille dans le dossier contenant le fichier d'entrée, pour exécuter d'autres commandes.

Donc, comment obtenir le dossier (et seulement le dossier) à partir d'un fichier d'entrée ? (Dans linux.)

0voto

Mike Q Points 461

Le problème avec la réponse ci-dessus vient des fichiers entrés avec "./" comme "./mon-fichier.txt".

Solution (parmi d'autres) :

    myfile="./somefile.txt"
    FOLDER="$(dirname $(readlink -f "${ARG}"))"
    echo ${FOLDER}

-1voto

Mehul Rathod Points 780

J'ai utilisé readlink -f qui fonctionne sous linux.

donc

FULL_PATH=$(readlink -f filename)
DIR=$(dirname $FULL_PATH)

PWD=$(pwd)

cd $DIR

#<do more work>

cd $PWD

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X