`pwd`,但省略前 n 个目录

`pwd`,但省略前 n 个目录

pwd给出当前目录的完整路径,例如:

/first/second/third/anotherdir/thefinaldirectory

我怎样才能省略前n个,比如说三个目录,这样就只

/anotherdir/thefinaldirectory

被退回?

我想这应该可以与sed?

答案1

Bash 有一些内置的字符串操作:

echo "/${PWD#/*/*/*/}"

答案2

您可以cut为此使用,例如:

pwd | cut -d/ -f 4-

pwdprints 分割by的输出/并从第四个字段打印到末尾。

在你的情况下,这将是:

echo "/first/second/third/anotherdir/thefinaldirectory" | cut -d/ -f 5-

答案3

对于任何 POSIX sed

pwd | sed 's,\(/[^/]*\)\{3\},,'

或者:

pwd | sed -E 's,(/[^/]*){3},,'

-E与 GNU 和 BSD sed 一起工作,并将在不久的将来成为标准

相关内容