Reputation: 315
Given a folder path that has /home
, I would like to scrape the username from the folder path. (A little home work, trying to compare folder username to actual owner of the folder, which can be determined with a quick stat -c '%U' path
Input1: /home/user1/Music
Output1: user1
Input2: /home/user2
Output2: user2
Input3: /home
Output3: root
I have managed to come up with something that is able to cater to Input1, but I am unable to come up with something to cater to the other two inputs.
owner=$(path | grep -oP '(?<=home/).*(?=/)')
This will scrape anything that is between home/
and the next /
.
Upvotes: 0
Views: 566
Reputation: 1548
A bit of a hack
owner=$(cut -d/ -f3 <<< "$path/root")
A more complete answer to deal with input 3 in the form Input3: /home/
or paths like /home//user3
owner=$(tr -s '/' <<< "$path/root" | cut -d/ -f3)
Upvotes: 2
Reputation: 194
I would recommend to use ls
command to get path either owner, then parse it by awk
.
ls -lp /home | grep "/$" | tr -d '/' | awk '{print "Input:", $9, "\nOwner:", $3, "\n"}'
Upvotes: 0
Reputation: 1461
You can trry this:
owner=$(echo $path | tr '/' ' ' | awk '{print $2}')
if [ "$owner" == "" ]
then echo root
else
echo $owner
fi
Hope this helps. But I would recommend to use ls -l
command and extract owner from there.
Upvotes: 1