Linux - Ferramenta de linha de comando para normalizar um nome de arquivo?

2

Existe uma ferramenta de linha de comando no Linux que "normalizará" um nome de arquivo? ou seja, remover todas as partes "xx /./ xx" ou "myfolder /../ myotherfolder"?

    
por Rory 15.09.2009 / 16:36

4 respostas

1

Na verdade, é realpath: link

Existe também uma versão de linha de comando: cyberciti.biz/faq/unix-linux-bsd-find-real-physical-path /

Mas no meu CentOS 5 ele não está disponível por padrão.

Além disso, há uma "forma de trapaça":

$ bash -c "cd /foo/../bar/ ; pwd"
/bar
    
por 16.09.2009 / 10:53
9

readlink -f parece fazê-lo (apesar de ser destinado a remover referências de links simbólicos):

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

Eu acredito que isso é chamado de 'canonicalização'.

    
por 15.09.2009 / 16:51
1

Com o comando line do python:


python -c 'import os; print os.path.basename("/home/mezgani/nat")'
python -c 'import os; print os.path.direname("/home/mezgani/nat")'
    
por 15.09.2009 / 16:57
1

Você está pedindo o comando basename?

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

E há também a outra parte: dirname

$ dirname ../../.bashrc
../..
    
por 15.09.2009 / 16:46