59 votes

Récupérez le nom de fichier sous Unix hors du chemin complet

J'essaie d'obtenir "abc.txt" sur /this/is/could/be/any/path/abc.txt aide de la commande Unix. Notez que /this/is/could/be/any/path est dynamique.

Une idée?

84voto

kev Points 41855

En bash :

 path=/this/is/could/be/any/path/abc.txt

Si votre chemin contient des espaces, enveloppez-le dans "

 path="/this/is/could/be/any/path/a b c.txt"

Ensuite, pour extraire le chemin, utilisez la fonction basename

 file=$(basename "$path")

ou

 file=${path##*/}

6voto

gbulmer Points 2495

basename path donne le nom du fichier à la fin du chemin

Éditer:

Il vaut probablement la peine d'ajouter qu'un modèle courant consiste à utiliser des guillemets arrière autour des commandes, par exemple `basename ...`, afin que les shells UNIX exécutent la commande et renvoient sa valeur textuelle.

Donc, pour affecter le résultat de basename à une variable, utilisez

 x=`basename ...path...`

et $x sera le nom du fichier.

2voto

Pavel Dolinin Points 21

Vous pouvez utiliser la commande dirname

 $ dirname $path

2voto

tonymarschall Points 1824

Vous pouvez utiliser basename /this/is/could/be/any/path/abc.txt

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