開発用ツール

tree-to-file.sh

tree を優先し、不在なら対応するパッケージ管理ツールで導入を試みます。代替の find/awk 出力はフィルター仕様が異なり、権限や出力先の問題で失敗する場合があります。

出力先と公開され得る名前を確認

ワンライナー

curl -fL 'https://www.helper.sh/tree-to-file.sh' -o './tree-to-file.sh'

このコマンドは同梱ファイルをダウンロードするだけで、実行しません。保存したソースを確認し、バージョンを照合してから実行するか判断してください。

保存したファイルを照合

このページのビルドに同梱されたバイト列と照合します。ファイルはこのタブ内で処理し、この機能は送信・保存しません。上限は2 MiBです。

期待する SHA-256
5abd1198eb756cd94316669022678802d59c1121f221cb879d6255259d47097d

同梱ファイルのバイト数: 2797

チェックサムファイルを保存

スクリプトとチェックサムを同じディレクトリに保存してください。GNU Coreutils のある Linux では次のコマンドでバイト列だけを検査できます。スクリプトは実行しません。コマンドには元のファイル名が必要です。

sha256sum --check './tree-to-file.sh.sha256'

まだ照合していません。

スクリプトとチェックサムは同じサイトから取得し、独立した署名ではありません。一致しても安全性、上流の真正性、ホストへの適合性は証明しません。可変の依存先は別途確認してください。

検証と制限を読む

実行条件

  • Linux、macOS または Unix 系シェル環境
  • sh コマンド
  • find コマンド
  • sort コマンド
  • awk コマンド
  • パッケージ導入には sudo または root が必要な場合がある

適用場面

  • 課題報告用のディレクトリ構造の確認
  • 大きなディレクトリを除外した概要の作成
  • 異なるホストでの構成確認手順の共有

主なポイント

  • 利用可能なら tree を使用
  • brew、apt、dnf、yum などで tree の導入を試行
  • tree が使えなければ find と awk に切り替え。ただし出力成功は保証しない

推奨手順

  1. 取得したソースと出力先を確認します。
  2. tree が利用可能か、パッケージ導入が許可されるか確認します。
  3. 必要なら導入試行に伴うネットワークと権限を審査します。
  4. 既存 tree.txt の上書きと、出力に含まれる機密ファイル名を確認します。

注意事項

  • 重要なホストではソースを確認してから実行を判断してください。
  • 自動導入でパッケージメタデータを更新する場合があります。
  • 代替出力の除外名は完全一致で、シェルのグロブとは異なります。

対応範囲と制限

  • sh が必要です。tree がなければ、検出したパッケージマネージャーを root または sudo で使って導入を試みます。常に読み取り専用の一覧取得になるわけではありません。導入を無効にする引数や dry-run はありません。
  • 第1引数は出力ファイル名(既定 tree.txt)、第2引数は除外パターンです。現在の作業ディレクトリを走査し、出力先をバックアップなしで上書きします。
  • 代替処理には find、sort、awk が必要です。走査後にパス構成要素の完全一致で除外します。tree の -I とはワイルドカードの解釈や表示形式が異なる場合があります。

変更されるファイル、サービス、データ

  • パッケージ情報を更新し、tree を導入する場合があります。sudo の入力が必要になることがあり、パッケージやリポジトリのバージョンは固定されません。
  • 隠し項目を含む一覧を指定先へ書き込みます。代替処理は除外ディレクトリも走査してから名前を除くため、除外指定はアクセス制御にはなりません。

読み取り専用の確認

  • 実行前に `command -v tree`、`pwd`、出力先ファイルの有無を確認します。
  • 内容を確認した実行後、必要なディレクトリ、除外対象、欠落、非公開の名前を出力ファイルで確認してから共有します。完了表示だけでは一覧の完全性は確認できません。

失敗した場合

権限、パッケージ管理、書き込みのエラーが出たら、既存出力を保全して原因を確認します。自動導入を許可できない場合は通常の承認手順で tree を先に導入してください。対象ディレクトリから別名の出力先を指定します。バックアップや自動復旧はありません。

実行前にダウンロードして内容を確認し、バージョンを検証してください。ハッシュはこのバイト列を識別するだけで、安全性を証明しません。pipe 実行は取得した内容を直ちに実行し、上流の依存関係は変化することがあります。

出力先と公開され得る名前を確認

ソースの確認であり、ファイルシステム調査や出力成功の証明ではありません。上の操作制限を前提に、実行・共有前の判断を具体例で説明します。

2つの位置引数の意味

走査元は常に現在の作業ディレクトリです。第1引数は走査元ではなく出力ファイル名、第2引数は除外パターンです。空引数は既定値(tree.txtと同梱の除外一覧)になります。オプション解析はないため、--helpや--no-installを対応フラグとして使わないでください。追加引数で深さや走査元は指定できません。

シェルの > は走査前に出力を作成・切り詰め、既存の出力シンボリックリンクをたどる場合があります。失敗しても空・不完全なファイルに置換済みとなり得ます。出力自身の掲載を避けるには、走査外の確認済み新規出力先を選びます。親ディレクトリの存在と書き込み権限が必要です。バックアップ、上書き防止、原子的書き込みは追加されません。

実行判断前の読み取り確認

現在地とコマンドの場所を表示するだけで、出力処理・導入・権限検証・互換性認証は行いません。treeがなくパッケージ変更も認可されていないなら止めてください。導入を無効にする指定はありません。

pwd
command -v tree
command -v find
command -v sort
command -v awk

具体的な除外動作の違い

ソースと資料に基づく例で、計測した出力ではありません。非表示は一覧からの除外であり、アクセス禁止ではありません。代替処理は除外先も走査します。treeの版による差は導入済みマニュアルで確認してください。

規則と対象パスの例treeを使う処理find/awkの代替処理
規則 node* / パス node_modules/file.jsワイルドカードで名前を除外文字列node*はnode_modulesと一致せず残る
規則 .git / パス .git/config-Iで除外パス構成要素の完全一致で除外
同梱の既定値 / .env既定一覧では除外されない既定一覧では除外されない

.gitignoreという名前を除外しても、その規則は読みません。ソースはtree --gitignoreを指定していません。内容のダンプでなくても、隠し名やリンク先は非公開情報を示し得ます。共有前に保存された名前を確認してください。

完了表示だけでは判断できない理由

代替処理はshのset -euの下でfind | sort | awkを使い、pipefailは設定しません。末尾の終了状態を使うシェルではfind/sortの失敗後にawkが成功し、「Wrote」と表示する場合があります。ファイル名の改行も行単位の表現を壊します。標準エラーと既知パスを確認し、空でない出力や終了値0だけで完全と判断しないでください。不完全な出力は証拠として保ち、同じ先へ盲目的に再実行しないでください。

上流treeマニュアル · GNU Bash · 出力確認の検証と制限を読む

関連トピック

CentOS 7: 復旧作業の選び方

サポート終了済みホストを変更する前に、リポジトリ、SSH、Docker の容量不足を切り分けます。

トピックを見る