【发布时间】:2019-06-08 23:48:07
【问题描述】:
我将变量 x 设置为当前工作目录。例如。
x = this/is/an/important/文件夹/路径
如何在 bash 中遍历此路径并仅按照以下方式获取最后 3 个文件夹?
重要/文件夹/路径
请注意,文件夹的数量会有所不同,但我总是需要最后 3 个。
【问题讨论】:
标签: bash path subdirectory csv
我将变量 x 设置为当前工作目录。例如。
x = this/is/an/important/文件夹/路径
如何在 bash 中遍历此路径并仅按照以下方式获取最后 3 个文件夹?
重要/文件夹/路径
请注意,文件夹的数量会有所不同,但我总是需要最后 3 个。
【问题讨论】:
标签: bash path subdirectory csv
可能有很多方法可以做到这一点。这是一个。
awk -F '/' '{printf "%s/%s/%s\n", $(NF-3), $(NF-2), $NF }'
【讨论】:
既然您要求 bash 解决方案:
#!/bin/bash
string="this/is/an/important/folder/path"
pattern="^(.*\/){0,1}(.*\/.*\/.*)$"
[[ $string =~ $pattern ]]
echo "${BASH_REMATCH[2]}"
输出:
# ./test.sh
important/folder/path
【讨论】:
这也可以工作
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 个元素
【讨论】: