-
DFS による逐次ストリーム出力で巨大ツリーでも低メモリ。
-
メタデータは各エントリにつき1回だけ取得し、サイズや更新時刻をキャッシュ。
-
plain/json/ndjson/csv/yaml/html など複数フォーマットへ同一パイプラインから出力。
-
glob/regex/type/size/mtime/perm など柔軟なフィルタを組み合わせてディレクトリを絞り込み。
-
Git ステータスとリネーム検出をオプションで表示、差分モードも搭載。
-
--jobs で並列メタデータ収集、--warn-depth で深すぎるツリーを警告。
-
Windows ACL 属性の整形表示とルート外へ抜けるシンボリックリンクの遮断で安全性を確保。
printree [OPTIONS] [PATH]|
Note
|
PATH を省略するとカレントディレクトリを対象にします。オプションは前後どちらに配置しても構いません。 |
主なオプション:
| オプション | 説明 |
|---|---|
|
探索の最大深さ。 |
|
ドットファイルも表示。 |
|
シンボリックリンクを辿る(ルート外へ抜けるリンクは遮断)。 |
|
名前順ソート。 |
|
パターンで絞り込み。複数指定可。 |
|
include/exclude の構文を選択。 |
|
パターンをファイル名/パスのどちらに適用するか。 |
|
正規表現で追加フィルタリング。 |
|
|
|
|
|
UNIX パーミッション(例 |
|
表示する種類を限定(複数指定で合成)。 |
|
|
|
Git の変更状態を表示。 |
|
Git リネーム検出を有効化(コスト増。 |
|
カラー出力の制御。 |
|
出力形式。plain/ndjson/csv は逐次書き出し。 |
|
文字エンコーディング。 |
|
メタデータ取得を N 並列で実行。 |
|
深さが N を超えたら STDERR に警告( |
|
Note
|
すべてのフィルタは AND 条件です。正規表現や数値条件が無効な場合は起動時にエラー終了します。 |
-
plain: 罫線付きツリー。ディレクトリは子のサイズを集計して表示し、Git ステータスを色付きで表現。 -
json: 全ノードを JSON 配列として出力。 -
ndjson: 1 行 1 エントリの JSON。ストリーム処理向き。 -
csv:path,name,kind,size,mtimeなどの列を CSV で逐次出力。 -
yaml: 完全なネスト構造を保持。全エントリを一旦収集してから出力。 -
html: JSON を埋め込んだ単一 HTML ドキュメントを生成。 -
toon: TOON(Token-Oriented Object Notation) 互換の表形式。entries[<len>]{path,…}:のヘッダで列名を一度だけ宣言し、各行をカンマ区切りで出力してトークン数を圧縮。
例:
root:.
entries[3]{path,depth,kind,size,mtime,perm,symlink_target,loop_detected,error,git_status}:
.,0,dir,-,-,-,-,0,-,-
src,1,dir,-,-,-,-,0,-,-
src/main.rs,2,file,120,-,rw-r--r--,-,0,-,--
.gitが見つからない場合は--git-status/--git-renameを自動的に無効化し、警告のみ表示。 -
ステータスは
[M],[A],[D],[R]を用い、plain では色付きで表示。 -
リネーム検出を有効にすると
[warn] rename detection enabled (slow)が STDERR に出力されます。
-
cargo testでユニットテストを実行します。 -
CLI の挙動確認は
tests/run_all.shを使うと、リリースビルドを一度だけ生成して smoke/diff/tree スクリプトをまとめて実行できます。
./tests/run_all.sh-
main ブランチに
Cargo.tomlを含む変更をプッシュするとBuild, Package & Release printreeワークフローが走り、未作成ならv<version>タグを打ったうえで GitHub Release に成果物をアップロードします。 -
配布物は
dist/に集約され、tar.gz/zip/deb/rpm/exeといった配布専用ファイルのみをアップロード対象にして README や Cargo.toml を単独で再投稿しないようにしています。アーカイブ内には README.adoc と LICENSE のみを同梱し、余計なソースメタデータは含めません。
-
逐次 DFS で探索順序は安定化済みソート後に固定。
-
各エントリのメタデータは 1 回だけ取得してキャッシュし、再利用します。
-
フォーマッタは共通の
Entry表現を受け取り、必要な情報のみをシリアライズ。
-
.gitignoreモードでは厳密な罫線位置が通常モードと異なる場合があります(インデントは保証)。 -
Windows の
--filter-permは属性体系の差異により警告のみで無効です。