Linux-命令行工具来规范化文件名?

Linux-命令行工具来规范化文件名?

Linux 中是否有可以“规范化”文件名的命令行工具?即删除所有“xx/./xx”部分或“myfolder/../myotherfolder”部分?

答案1

实际上,它是真实路径: http://linux.about.com/library/cmd/blcmdl3_realpath.htm

还有一个命令行版本:cyberciti.biz/faq/unix-linux-bsd-find-real-physical-path/

但在我的 CentOS 5 上它默认不可用。

另外还有一种“作弊方法”:

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

答案2

readlink -f似乎可以做到这一点(尽管旨在取消引用符号链接):

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

我相信这被称为‘规范化’。

答案3

您是在询问 basename 命令吗?

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

还有另一部分:dirname

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

答案4

使用python行命令:


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

相关内容