指定されたパスのすべての親ディレクトリパスを取得するには、何を使用できますか?

指定されたパスのすべての親ディレクトリパスを取得するには、何を使用できますか?

私は与えられたパスの親ディレクトリのリストを提供できるbashスクリプトで利用可能なツールを探しています。

foo/bar/moocowたとえば、出力したい入力があるとします。

foo
foo/bar
foo/bar/moocow

複数のパスを入力して独自の結果を得ることができれば良いでしょう。たとえば、次のようになります。

toolimlookingfor << EOF
dir1/file1
dir1/file2
foo/bar/moocow
EOF

出力:

dir1
dir1/file1
dir1/file2
foo
foo/bar
foo/bar/moocow

dirname私が探しているものに近いが、直系の親だけを提供します。私は自分自身とすべての親の道を探しています。

ベストアンサー1

/tmpフォルダ内に新しいディレクトリを作成することに同意する場合は、findコマンドを使用できます。この方法では、一意のディレクトリ名のみを印刷することもできます。

#!/bin/bash
if [[ $# -eq 0 ]]; then exit; fi
mkdir -p /tmp/printnames
for i
do
  mkdir -p /tmp/printnames/"$i"
done
cd /tmp/printnames
find *  -type d -print
rm -r /tmp/printnames

したがって、一時ディレクトリ構造を作成し、検索を使用して移動できます。

おすすめ記事