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.
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##*/}
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.
Vous pouvez utiliser la commande dirname
$ dirname $path
Vous pouvez utiliser basename /this/is/could/be/any/path/abc.txt