Enumere toda la jerarquía del directorio principal

Enumere toda la jerarquía del directorio principal

Cómo obtener la lista de todos los directorios principales.

Supongamos que actualmente estoy en

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

Quiero

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 /

De hecho, necesito canalizar esta salida para rofi -dmenupoder acceder fácilmente a los directorios principales.

La solución actual que estoy usando pushdes

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

Respuesta1

Utilice un bucle, comenzando $PWDy eliminando un nivel de directorio a la vez. Sólo debes tener cuidado de no terminar en /. También cuente las líneas (o tuberías nl). Aquí hay una función que funciona tanto en bash como en 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 /"
}

Mi versión no pone barras al final. Agréguelos si lo desea.

información relacionada