'pwd', mas omite primeiro n diretórios

2

pwd fornece o caminho completo do diretório atual, por exemplo:

/first/second/third/anotherdir/thefinaldirectory

Como posso omitir o primeiro n, digamos três diretórios, para que apenas

/anotherdir/thefinaldirectory

é retornado?

Eu acho que isso deve ser possível com sed ?

    
por snurden 31.03.2016 / 15:17

3 respostas

2

O Bash tem alguma manipulação interna de strings:

echo "/${PWD#/*/*/*/}"
    
por 31.03.2016 / 15:24
1

Você pode usar cut para isso, por exemplo:

pwd | cut -d/ -f 4-

impressões divide a saída de pwd por / e imprime do quarto campo até o fim.

No seu caso, isso seria:

echo "/first/second/third/anotherdir/thefinaldirectory" | cut -d/ -f 5-
    
por 31.03.2016 / 15:23
1

Com qualquer POSIX sed :

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

ou:

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

-E funciona com o GNU e o BSD sed, e se tornará padrão no futuro próximo .

    
por 31.03.2016 / 15:23