파일의 부모 디렉토리 이름 만 가져오고 싶습니다.
예 : 내가있을 때 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"