`pwd`、しかし最初のnディレクトリは省略

`pwd`、しかし最初のnディレクトリは省略

pwd現在のディレクトリへのフルパスを提供します。例:

/first/second/third/anotherdir/thefinaldirectory

最初のn個、たとえば3つのディレクトリを省略するにはどうすればよいですか?

/anotherdir/thefinaldirectory

帰ってきた?

私はこれがうまくいくべきだと思いますかsed

答え1

Bashにはいくつかの組み込み文字列操作があります。

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

答え2

たとえば、次のように使用できますcut

pwd | cut -d/ -f 4-

pwd印刷はbyの出力を分割し/、4番目のフィールドから最後まで印刷します。

あなたの場合は次のとおりです。

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

答え3

すべてのPOSIXの場合sed:

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

または:

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

-EGNUとBSD sedで動作します近い将来に標準となる

関連情報