如何转换以下绝对路径:
/path/to/some/file/that/i/need.file
进入相对路径:
file/that/i/need.file
当我在/path/to/some
目录中时?
我想获取一个绝对文件路径并将其拆分到当前工作目录,以便我拥有从当前工作目录开始的文件名路径。
我是在Compass config.rb的on_stylesheet_saved
回调中运行它。
答案 0 :(得分:4)
我会使用Pathname类:
full_dir = Pathname.new('/path/to/some/file/that/i/need')
base_dir = Pathname.new('/path/to/some')
full_dir.relative_path_from(base_dir).to_s # => "file/that/i/need"
以下是the documentation关于路径名的说法:
Pathname表示文件系统上的文件或目录的名称,但不表示文件本身的名称。
路径名取决于操作系统:Unix,Windows等。此库适用于本地操作系统的路径名,但实验上支持非Unix路径名。
路径名可以是相对的或绝对的。直到您尝试引用该文件时,文件是否存在才会发生。
路径名是不可变的。它没有破坏性更新的方法。
这个类的目标是以比标准Ruby提供的更简洁的方式操作文件路径信息....
答案 1 :(得分:1)
你应该能够做下面的事情。
absolute_path.split(Dir.pwd.to_s)[1].sub('/','')
这将获得一个2元素数组,其中第二个元素是您想要的路径的剩余部分。然后sub将去除前缀正斜杠。
答案 2 :(得分:0)
您可以使用以下表达式
absolute_path.gsub(Dir.pwd, '')
在这种情况下,如果当前目录是绝对路径的一部分,它将返回相对路径,否则它将返回完整路径