「TREE」をサブディレクトリとして使用

「TREE」をサブディレクトリとして使用

treeファイルを作成したいディレクトリにcd〜/を使用して複数の出力ファイルを生成できますかtree

たとえば、というディレクトリがありますparent-dir

サブparent-dirディレクトリの名前はa、、bto 、タイトルczサブディレクトリです0-9

これらのサブディレクトリ内には、次の追加のサブディレクトリがあります。ランダム小文字/大文字、数字、いくつかの特殊文字を使用してください。tree(このレベルで.txt出力ファイルを作成したいです。)


ディレクトリ構造は次のとおりです。

parent-dir ( <-- I will be cd ~/ here and run cmd from here)
|_a
| |_ahgfVFCJC6.h78 ( <-- cmd should create a tree titled ahgfVFCJC6.h78.txt)
| | |_file.jpg
| | |_file.mp4
| |  
| |_a34grBVFHEwerv ( <-- cmd should create a tree titled a34grBVFHEwerv.txt)
|   |_file.txt
|   |_file.mp3
|
|_b
| |_bhlHKH.7tbh ( <-- cmd should create a tree titled bhlHKH.7tbh.txt)
|   |_file.png
|   |_file.txt

...など...

The .txt files created using `tree`:

ahgfVFCJC6.h78.txt
a34grBVFHEwerv.txt
bhlHKH.7tbh.txt

should be outputted in a specified directory (example: ~/Desktop/Tree)

何千もの類似したディレクトリ(しかし名前は違います)がparent-dirあるので、その中でコマンドを実行したいと思います。すべてのサブディレクトリにCDを挿入する必要がある場合は、時間がかかりすぎます。aahgfVFCJC6.h78

答え1

存在するzsh

for d (parent-dir/*/*(N/)) (cd -- $d && tree) > output-dir/$d:t.txt

答え2

treeコマンドを使用するためにディレクトリにCDを移動する必要はなく、tree同時に使用する複数のディレクトリを指定できます。

tree /dir1 /dir2 /dir3 -o /some/other/path/outputfile -n

また、stdoutリダイレクトを使用したい場合は、>そこ>>からもパスを指定できます。

tree /dir1 /dir2 /dir3 -n > /some/other/path/outputfile

確認するパスを含むファイルがある場合は、次のようにして各ディレクトリに出力ファイルを作成できます。

for i in $(cat filewithdirs); do tree "$i" -o "$i/outputfile"; done

親ディレクトリ内のすべての子ディレクトリパスを取得するには、次のように使用できます。

tree parentdir/ -L 1 -fid

これは、インデントなしでそのパスを持つparentdirの最初のレベルのすべてのサブディレクトリを印刷します。

  • -L オプションは、目的のレイヤーの深さを指定します。

  • -f は、パスプレフィックスを印刷するオプションを指定します。

  • -iインデントを無効にします。

  • -d は、ディレクトリのみがリストされることを指定します。

  • -o は、標準出力の代わりに出力ファイルを使用することを指定します。

関連情報