skip to Main Content

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 /.

3

Answers


  1. 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.

    Login or Signup to reply.
  2. 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"}'

    Login or Signup to reply.
  3. 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)
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search