【问题标题】:Remove fixed filename extension in one-liner删除单行中的固定文件扩展名
【发布时间】:2021-02-14 14:25:10
【问题描述】:

当我这样做时

ruby -e 'print "file: #{ARGF.filename}"' test1.adoc

它打印test1.adoc,但我正在寻找的是删除扩展名,所以我只得到test1。如果有

$ touch test1.adoc
$ ruby -e 'print "file: #{ARGF.filename}.sub('.adoc','')"' test1.adoc
Traceback (most recent call last):
    1: from -e:1:in `<main>'
-e:1:in `filename': No such file or directory @ rb_sysopen - test1.adoc (Errno::ENOENT)

使用pop 很容易获得通用解决方案,但沿着这条路走下去会更加困难......

问题

谁能弄清楚如何在我的单行中删除.adoc

【问题讨论】:

  • 如果是/foo/bar/test.adoc 怎么办?你想要什么?

标签: regex ruby


【解决方案1】:

使用File.basename 删除扩展名和文件路径的其余部分。

puts File.basename('test1.adoc', '.*')  # test1
puts File.basename('/foo/bar/test1.adoc', '.*')  # test1

【讨论】:

    【解决方案2】:

    你可以使用

    ruby -e 'print "file: #{File.basename(ARGF.filename, '"'.*'"')}"' test.adoc
    

    第二个参数设置为.*File.basename 返回不带任何扩展名的文件名,但您需要正确引用单引号以保持语法正确。

    '"'.*'"'中,第一个'print之前关闭当前打开的',然后"'.*'"'.*'添加到代码行,然后'重新启动代码行以用结尾的' 关闭。

    【讨论】:

      猜你喜欢
      • 2012-06-29
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多