모든 상위 디렉터리 계층 구조 나열

모든 상위 디렉터리 계층 구조 나열

모든 상위 디렉토리 목록을 얻는 방법.

내가 현재

% pwd
/media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/shell-command-language/zsh-scripting

나는 원해요

0 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/shell-command-language/zsh-scripting
1 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/shell-command-language
2 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/
3 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/
4 /media/blueray/WDPurple/_DataBackup/_Work/
5 /media/blueray/WDPurple/_DataBackup/
6 /media/blueray/WDPurple/
7 /media/blueray/
8 /media/
9 /

rofi -dmenu실제로 상위 디렉터리로 쉽게 CD를 이동할 수 있도록 이 출력을 파이프로 연결해야 합니다 .

내가 사용하고 있는 현재 솔루션은 다음과 pushd같습니다.

function d () {
  select=$( dirs -v | head -10 | rofi -dmenu ) 
  cd -${select:0:1}
}

답변1

$PWD한 번에 한 디렉터리 수준에서 시작하고 제거하는 루프를 사용합니다 . 으로 끝나는 것에 주의하면 됩니다 /. 또한 라인 수(또는 파이프 통과 nl)도 계산합니다. 다음은 bash와 zsh에서 모두 작동하는 기능입니다.

function pwd_and_parents {
  local d n
  d=$PWD
  n=0
  while [[ $d = *[!/]* ]]; do
    printf '%d %s\n' "$n" "$d"
    d=${d%/*}
    ((++n))
  done
  echo "$n /"
}

내 버전에는 후행 슬래시가 포함되지 않습니다. 원하는 경우 추가하세요.

관련 정보