0

readlink用来查找文件的完整路径:

  cek=$(readlink -f "$1")
  mkdir -p  "$ydk$cek"
  mv "$1" "$ydk/$cek/$ydkfile"  

但是readlink -f "$1"给了我完整的路径。如何裁剪完整路径?

例如:

  /home/test/test/2014/10/13/log.file

但我只需要

  /test/2014/10/13/

我该怎么做?


从多条评论来看:

  • 输出应该是返回的完整路径的最后四个目录组件readlink

鉴于:

full_path=/home/some/where/hidden/test/2014/08/29/sparefile.log

输出应该是:

test/2014/08/29

(不要在路径修整代码中建立关​​于今天日期的任何假设。)

4

2 回答 2

4
于 2014-10-13T14:36:37.080 回答
0

你真的需要删除 "/home" 吗?

cek="/home/test/test/2014/10/13/log.file"
dir=$(dirname "$cek")
echo "${dir#/home}"
/test/test/2014/10/13

仅最后 4 个目录组件:

last4dirs() { 
    local IFS=/
    local -a components=($1)
    local l=${#components[@]}
    echo "${components[*]:l-5:4}"
}
last4dirs /home/some/where/hidden/test/2014/08/29/sparefile.log
test/2014/08/29
于 2014-10-13T14:06:15.477 回答