Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

modiier un path

3 réponses
Avatar
dudul
Bonjour,

J'utilise des variables PATH comme ceci par exemple :

/home/truc/machin/chose/nom_fichier

et je voudrais pouvoir transformer cela en

/home/truc/machin/chose

J'ai beaucoup de mal avec les expressions reguliere, pouvez vous maider,
merci

3 réponses

Avatar
Pascal Bourguignon
"dudul" writes:

Bonjour,

J'utilise des variables PATH comme ceci par exemple :

/home/truc/machin/chose/nom_fichier

et je voudrais pouvoir transformer cela en

/home/truc/machin/chose

J'ai beaucoup de mal avec les expressions reguliere, pouvez vous maider,
merci


Le problème, c'est que tu ne sais pas (ou en tout cas ne nous dis pas)
ce que tu veux.

Est ce que tu veux supprimer dans tous les chemins dans la variable
PATH exactement "/nom_fichier" à la fin du chemin, ou bien est ce que
tu veux supprimer ce qu'il y a après exactement
"/home/truc/machin/chose", ou bien est ce que tu veux supprimer ce
qu'il y a à plus de quatre niveau de profondeur, etc?

En supposant la première question:

PATH=$( echo "$PATH" | sed -e 's-/nom_fichier:-:-g' -e 's-/nom_fichier$--' )


--
__Pascal Bourguignon__
http://www.informatimago.com
http://pjb.ogamita.org

Avatar
Benoit Izac
Bonjour,

le 13/03/2007 à 23:02, dudul a écrit dans le message
<45f71dfe$0$6099$ :

J'utilise des variables PATH comme ceci par exemple :

/home/truc/machin/chose/nom_fichier

et je voudrais pouvoir transformer cela en

/home/truc/machin/chose


"${PATH%/*}" ou `dirname "$PATH"`

--
Benoit Izac

Avatar
Stephane Chazelas
2007-03-13, 23:02(+01), dudul:
Bonjour,

J'utilise des variables PATH comme ceci par exemple :

/home/truc/machin/chose/nom_fichier

et je voudrais pouvoir transformer cela en

/home/truc/machin/chose

J'ai beaucoup de mal avec les expressions reguliere, pouvez vous maider,
merci
[...]


IFS=:
set -f
a=$PATH:tail
set -- $a
n=$#
while [ "$n" -gt 1 ]; do
if [ -n "$1" ] && [ -e "$1" ]] && ! [ -d "$1" ]; then
set -- "$@" "$(dirname -- "$1")"
else
set -- "$@" "$1"
fi
shift
n=$(($n - 1))
done
shift
PATH="$*"

Remplace toutes les composantes de $PATH qui sont des
non-repertoires par leur dirname.

(pas testé)

--
Stéphane