【问题标题】:How to measure the depth of a file system path?如何测量文件系统路径的深度?
【发布时间】:2015-07-20 23:53:16
【问题描述】:

我正在寻找一种在命令行上执行此操作的方法,因为这在 JavaPython 中并不是太难的任务。

类似:

$ measure_depth /a/b/c/d/e/f
6
$ measure_depth /a
1

这个问题在功能上等同于“有没有一种简单的方法可以计算文件名中的斜杠数量?”

【问题讨论】:

  • 您希望measure_depth / 的深度是多少?对于measure_depth /a/ ?

标签: macos bash command-line terminal


【解决方案1】:

定义一个 measure_depth 函数:

measure_depth() { echo "${*#/}" | awk -F/ '{print NF}'; }

然后,如下使用:

$ measure_depth /a/b/c/d/e/f
6
$ measure_depth /a
1

【讨论】:

    【解决方案2】:

    你可以这样做

    tr -s "/" "\n" | wc -l
    

    这会给你一个额外的,所以一个“hacky”的方法是

    sed "s/^\///" | tr -s "/" "\n" | wc -l
    
    echo "/a/b/c/d/e/f" | sed "s/^\///" | tr -s "/" "\n" | wc -l
    6
    

    【讨论】:

      【解决方案3】:

      在计算斜线之前使用realpath 以避免高估,例如/home/user/../user/../user/../user/dir/ 会被翻译成/home/user/dir

      realpath <dir> | grep -o '/' | wc -l
      

      【讨论】:

      • 如标签所述,OP 使用的是 OS X 而不是 Linux,realpath 默认情况下不存在于 OS X 中,也不会默认安装在某些现代 Linux 发行版中,例如 Linux Mint 17.1 并且需要事后以一种或另一种方式手动安装它。它是 GNU coreutils 的一部分,如果安装了 OS X 的命令行工具,可以使用 Homebrew 或手动安装。也就是说,John1024 的答案是 IMO 迄今为止提出的最好的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 2010-10-19
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多