Siou
Siou

Reputation: 527

Extract the last directory of a pwd output

How do I extract the last directory of a pwd output? I don't want to use any knowledge of how many levels there are in the directory structure. If I wanted to use that, I could do something like:

> pwd
/home/kiki/dev/my_project
> pwd | cut -d'/' -f5
my_project

But I want to use a command that works regardless of where I am in the directory structure. I assume there is a simple command to do this using awk or sed.

Upvotes: 51

Views: 42900

Answers (5)

mwieczorek
mwieczorek

Reputation: 2252

The way that I do it is simply:

pwd | xargs basename

Upvotes: 1

mihi
mihi

Reputation: 6735

Are you looking for basename or dirname?

Something like

basename "`pwd`"

should be what you want to know.

If you insist on using sed, you could also use

pwd | sed 's#.*/##'

Upvotes: 82

CenterOrbit
CenterOrbit

Reputation: 6861

Should work for you: pwd | rev | cut -f1 -d'/' - | rev

Reference: https://stackoverflow.com/a/31728689/663058

Upvotes: 5

Christopher Pickslay
Christopher Pickslay

Reputation: 17772

Using awk:

pwd | awk -F/ '{print $NF}'

Upvotes: 4

Teddy
Teddy

Reputation: 6163

If you want to do it completely within a bash script without running any external binaries, ${PWD##*/} should work.

Upvotes: 26

Related Questions