すべての親ディレクトリ階層を一覧表示する

すべての親ディレクトリ階層を一覧表示する

すべての親ディレクトリのリストを取得する方法。

私が現在

% 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、一度に 1 つのディレクトリ レベルを削除します。 で終了することに注意する必要があります/。また、行を数えます (または をパイプします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 /"
}

私のバージョンでは末尾にスラッシュは付きません。 必要な場合は追加してください。

関連情報