web-dev-qa-db-fra.com

Prenez le nom de fichier sous Unix hors du chemin complet

J'essaye d'obtenir "abc.txt" hors de /this/is/could/be/any/path/abc.txt en utilisant la commande Unix. Notez que /this/is/could/be/any/path est dynamique.

Une idée?

Merci d'avance.

41
iwan

Dans 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 de nom de base

file=$(basename "$path")

ou

file=${path##*/}
62
kev

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

Modifier:

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

Donc, pour affecter le résultat du nom de base à une variable, utilisez

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

et $ x sera le nom du fichier.

6
gbulmer

Vous pouvez utiliser la commande dirname

$ dirname $path
2
Pavel Dolinin

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

1
tonymarschall