ファイルとそのファイルを指すすべてのディレクトリに "ls -l"を使用しますか?

ファイルとそのファイルを指すすべてのディレクトリに

(おそらく単純な)スクリプトの作成を始める前に、次の機能を実行するコマンドはありますか?

[:~/software/scripts] % ls -ld / /usr /usr/bin /usr/bin/tee 
drwxr-xr-x 21 root root  4096 Mar 31 08:48 /
drwxr-xr-x 11 root root  4096 Jan 30 09:48 /usr
drwxr-xr-x  2 root root 73728 Apr 14 07:54 /usr/bin
-rwxr-xr-x  1 root root 26308 Jan 16  2013 /usr/bin/tee

すべての部分パスを手動で入力する必要はありませんか?アイデアは言うことができるということです

ls --this-new-flag /usr/bin/tee  

または

command -l /usr/bin/tee 

上記の出力は---最終パスにつながるすべての部分パスの詳細なリストを表示します。/ /usr /usr/bin /usr/bin/tee与えられたシェル拡張トリックを出力することも/usr/bin/tee可能です。

ベストアンサー1

ls -ld `echo 'path/to/file' | sed ':0 p;s!/[^/]*$!!;t0' | sort -u`

sed部分:

  • :0ラベル0;
  • p印刷;
  • s!p!r!pパターンを交換と交換してくださいr
  • /[^/]*$検索を押してから、行の最後まで/シーケンスがない項目を検索します。/
  • 置換が空であるため、一致は直接削除されます。
  • t0s!!!交換が行われると、ラベルに移動します0

コメント後にOPが編集しました

私は次のことをしました(コメント、特にJanderとAndreyのコメントに感謝します)。

explode() {echo "$1" | sed -n ':0 p;s![^/]\+/*$!!;t0' | sort -u}

.zshrcそれから私は使えます

ls -ld $(explode /path/to/file) 

希望の出力を取得します。

おすすめ記事