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

question (bete ?) sur un script bash

4 réponses
Avatar
Professeur M
Bonsoir à tous,

la question est sûrement stupide mais je cale sur un premier script bash :

Comment extraire le nom d'un fichier/répertoire à partir de son chemin
complet ?

si je fais :
for REPERTOIRE in /home/*
do
echo "$REPERTOIRE a traiter..."
done

cela me donne
/home/toto a traiter...
/home/tata a traiter...

j'aimerai juste récupérer toto et tata

Merci de vos lumières

Méph'
--
C'est parce que la lumière est plus rapide que le son que certains
ont l'air brillants avant d'avoir l'air con

4 réponses

Avatar
Luc.Habert.00__arjf
Professeur Méphisto
:

Comment extraire le nom d'un fichier/répertoire à partir de son chemin
complet ?


${ploum##*/}

. Ce qui veut dire prendre le contenu de la variable ploum, et effacer son
plus long préfixe qui matche le motif « */ ». Au passage, si tu mets « # » à
la place de « ## », ça efface le plus court préfixe, et tu as pareil pour
les suffixe avec « %% » et « % » (donc pour enlever le nom du fichier et ne
garder que son chemin d'accès, ça serait « ${ploum%/*} »).

Des gens vont te dire « `dirname "$ploum"` », qui a le léger inconvénient
d'effacer les blancs qui se trouveraient à la fin de $ploum.

Avatar
Professeur M

${ploum##*/}


merci...

Des gens vont te dire « `dirname "$ploum"` », qui a le léger inconvénient
d'effacer les blancs qui se trouveraient à la fin de $ploum.


Dans le cas qui m'interresse, cela ne devrait pas poser de problème, mais
si ploum##*/ est plus propre...

Méph'

--
C'est parce que la lumière est plus rapide que le son que certains
ont l'air brillants avant d'avoir l'air con

Avatar
Luc.Habert.00__arjf
Professeur Méphisto

Dans le cas qui m'interresse, cela ne devrait pas poser de problème, mais
si ploum##*/ est plus propre...


Et plus court à taper, et plus efficace si le shell n'a pas basename en
builtin.

Avatar
Luc.Habert.00__arjf
Luc Habert :

Des gens vont te dire « `dirname "$ploum"` »


Lire basename à la place de dirname. Dirname, c'est l'équivalent de
${ploum%/*}.