tree
ファイルを作成したいディレクトリにcd〜/を使用して複数の出力ファイルを生成できますかtree
?
たとえば、というディレクトリがありますparent-dir
。
サブparent-dir
ディレクトリの名前はa
、、b
to 、タイトルc
はz
サブディレクトリです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を挿入する必要がある場合は、時間がかかりすぎます。a
ahgfVFCJC6.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 は、標準出力の代わりに出力ファイルを使用することを指定します。