さまざまなサブディレクトリにまとめられた多数のテキストファイルを検索しています。次のコマンドを実行すると、grep -lr foobar ./
次のような結果が得られます。
./dirA/dirA.A/abc.txt
./dirA/dirA.A/def.txt
./dirA/dirA.A/dirA.A.A/ghi.txt
./dirA/dirA.B/jkl.txt
./dirB/mno.txt
コマンドの動作方法と同様に、これをビジュアルツリーに表示する方法が必要ですtree
。次のように進みます。
./
dirA/
dirA.A/
abc.txt
def.txt
dirA.A.A/
ghi.txt
dirA.B/
jkl.txt
dirB/
mno.txt
スタックを持つ一部のPythonスクリプトでこれを行うのは十分簡単ですが、方法がある場合はbashで直接実行できる方法が本当に必要です。そのため、(a)出力形式を指定/変換するか、(b)他の一般的な「共通プレフィックスでインデント」ユーティリティを探していますが、grep
これまでは見つかりませんでした。
ベストアンサー1
tree
私のシステムにインストールされているバージョンよりも最新のバージョンを使用するソリューションを見つけました。バージョン1.8.0 tree
(2018年11月16日リリース)では、--fromfile
ファイルシステム自体の代わりにファイル(または)からディレクトリ/ファイルのリストを読み取り、ツリー表現を生成するこのパラメータが導入されました。stdin
$ grep -rl 'foobar' ./ |tree --fromfile -F .
./
└── ./
├── dirA/
│ ├── dirA.A/
│ │ ├── abc.txt
│ │ ├── def.txt
│ │ └── dirA.A.A/
│ │ └── ghi.txt
│ └── dirA.B/
│ └── jkl.txt
└── dirB/
└── mno.txt
6 directories, 5 files
参考までに: