2 votes

Linux - Outil en ligne de commande pour normaliser un nom de fichier ?

Existe-t-il un outil en ligne de commande sous Linux qui permet de "normaliser" un nom de fichier, c'est-à-dire de supprimer toutes les parties "xx/./xx" ou "mon dossier/../mon autre dossier" ?

0 votes

Je ne comprends pas ce que vous me demandez mais c'est peut-être juste moi :-)

9voto

MojoFilter Points 3730

readlink -f semble le faire (bien qu'il soit destiné à déréférencer les liens symboliques) :

[root@noldevvg19 ~]# readlink -f /etc/../usr/../etc/./sysconfig/../redhat-release 
/etc/redhat-release

Je crois que cela s'appelle la "canonisation".

1 votes

-f : tous les composants doivent exister sauf le dernier, -e : tous les composants doivent exister, -m : aucune condition d'existence

0 votes

La présence de readlink sur un système donné n'est pas garantie, ce qui peut poser problème.

1voto

slubman Points 2147

Vous demandez la commande basename ?

$ basename ../../.bashrc
.bashrc

Et il y a aussi l'autre partie : dirname

$ dirname ../../.bashrc
../..

0 votes

Ils sont liés, mais ils ne sont pas la solution. L'une des raisons est qu'ils ne font qu'une étape ; une autre est qu'ils réécrivent les chaînes sans tenir compte du système de fichiers, ce qui peut poser problème en présence de liens symboliques.

1voto

Ali Mezgani Points 3770

Avec la commande en ligne Python :

python -c 'import os; print os.path.basename("/home/mezgani/nat")'
python -c 'import os; print os.path.direname("/home/mezgani/nat")'

1voto

Vladislav Rastrusny Points 2511

En fait, c'est realpath : http://linux.about.com/library/cmd/blcmdl3_realpath.htm

Il existe également une version en ligne de commande : cyberciti.biz/faq/unix-linux-bsd-find-real-physical-path/

Mais sur mon CentOS 5, il n'est pas disponible par défaut.

Il existe aussi une "façon de tricher" :

$ bash -c "cd /foo/../bar/ ; pwd"
/bar

2 votes

Ou simplement (cd /foo/../bar && pwd)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X