파일의 부모 디렉토리를 가져옵니다 파일의 부모 디렉토리 이름

파일의 부모 디렉토리 이름 만 가져오고 싶습니다.

예 : 내가있을 때 path=/a/b/c/d/file, 난 단지 싶어 d하지 /a/b/c/d(내가로부터 얻을 수있는 dirname $path) 출력으로.

이를 수행 할 수있는 정교한 방법이 있습니까?



답변

당신이 기본 이름 원하는 것 같은데 이 dirname를 :

$ filepath=/a/b/c/d/file
$ parentname="$(basename "$(dirname "$filepath")")"
$ echo "$parentname"
d

답변

pwd를 사용하여 현재 작업 디렉토리를 확보하고 매개 변수 확장 을 사용 하여 다른 (서브) 쉘에 포크하지 않도록 할 수 있습니다.

echo ${PWD##*/}

편집 : 입증 된 출처


답변

나는 이것이 덜 자원적인 해결책이라고 생각한다.

 $ filepath=/a/b/c/d/file
 $ echo ${${filepath%/*}##*/}
 d

편집 : bash에서는 중첩 확장을 사용할 수 없지만 zsh에서는 작동합니다. 배쉬 버전 :

 $ filepath=/a/b/c/d/file
 $ path=${filepath%/*}
 $ echo ${path##*/}
 d

답변

bash에서 한 줄로 :

$ dirname /a/b/c/d/file | sed 's,^\(.*/\)\?\([^/]*\),\2,'

답변

나는 Julian67의 대답이 가장 좋았지 만 약간 확장 된 버전이 있습니다.

file_path = "a/b/c/d/file.txt"
parent=$(echo $file_path | sed -e 's;\/[^/]*$;;') # cut away "/file.txt";'$' is end of string
parent=$(echo $parent | sed -e 's;.*\/;;')  # cut away "/a/b/c/"
echo $parent # --> you get "d"