怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

treeコマンドで一部のファイル名が出力されない

Windows の tree コマンドの話。

tree コマンドは次のように /F オプションを付けると、各フォルダにあるファイル名も出力する。

tree /F

しかし、場合によってファイル名が出力されないことがある。
フォルダも含めたファイル名のパスの長さによって、出力されたりされなくなったりするようである。

具体的にはパスの長さが260文字以上となった場合に、ファイル名が出力されなくなる。
(259文字までは出力された)

これは Windows では全体のパスの長さが260文字に制限されていることから来ているのだろう。
(260文字以上はアウト。259文字以下にしなければならない)

検証

パスの長さが259文字と260文字になるファイルを準備して tree コマンドの動きを確かめる。

準備したファイルは次の2つ。
「ファイル名の文字数制限テスト1~」がパスの長さが259文字になるファイル。
「ファイル名の文字数制限テスト2
~」がパスの長さが260文字になるファイル。

C:\Users\username> dir /B C:\test\length
ファイル名の文字数制限テスト1_12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv.txt
ファイル名の文字数制限テスト2_12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw.txt

tree コマンドを実行した結果、パスの長さが259文字のファイルは出力されたが、260文字のファイルは出力されなかった。

C:\Users\username> tree /f C:\test
フォルダー パスの一覧
ボリューム シリアル番号は 9Z99-ZZ9Z です
C:\TEST
└─length
        ファイル名の文字数制限テスト1_12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv.txt

対処法はない(と思う)。
パスが長くなり過ぎないよう気を付けるしかない。