【问题标题】:Get last 3 folders from folder path - separated by forward slash - using bash从文件夹路径中获取最后 3 个文件夹 - 用正斜杠分隔 - 使用 bash
【发布时间】:2019-06-08 23:48:07
【问题描述】:

我将变量 x 设置为当前工作目录。例如。

x = this/is/an/important/文件夹/路径

如何在 bash 中遍历此路径并仅按照以下方式获取最后 3 个文件夹?

重要/文件夹/路径

请注意,文件夹的数量会有所不同,但我总是需要最后 3 个。

【问题讨论】:

    标签: bash path subdirectory csv


    【解决方案1】:

    可能有很多方法可以做到这一点。这是一个。

    awk -F '/' '{printf "%s/%s/%s\n", $(NF-3), $(NF-2), $NF }'
    

    【讨论】:

      【解决方案2】:

      既然您要求 bash 解决方案:

      #!/bin/bash
      string="this/is/an/important/folder/path"
      pattern="^(.*\/){0,1}(.*\/.*\/.*)$"
      
      [[ $string =~ $pattern ]]
      echo "${BASH_REMATCH[2]}"
      

      输出:

      # ./test.sh
      important/folder/path
      

      【讨论】:

      • 如果 string="important/foldar/path" 则不是
      • @Wahbivic,感谢您指出,我假设字符串包含三个以上的组件。我已经更新了答案
      【解决方案3】:

      这也可以工作

      x=this/is/an/important/folder/path
      IFS='/' xx=( $x )
      IFS=$' \t\n'
      l=${#xx[@]}
      for i in $(seq $((l-3)) $((l-1)))
      do
          printf '/%s' "${xx[i]}"
      done
      printf '\n'
      

      分割成一个数组,然后打印最后 3 个元素

      【讨论】:

        猜你喜欢
        • 2017-03-16
        • 1970-01-01
        • 2016-05-31
        • 1970-01-01
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-03
        相关资源
        最近更新 更多