パスが最も長いディレクトリを見つける方法は?

パスが最も長いディレクトリを見つける方法は?

ls ~ -Rコマンドを使用して、現在のディレクトリで最も長いパス(最も多くのサブディレクトリを含む)があるディレクトリを見つける方法

ベストアンサー1

GNU は、述語の書式指定子を使用して、見つかったfind名前の深さを出力できます。%d-printf

find . -type d -printf '%d\t%p\n'

これは、現在のディレクトリまたはその下に見つかったディレクトリの深さと検索パスに対する.ディレクトリパス名を出力します。深さとパス名は単一のタブに分けられます。

\0この情報をソートなどのために他のツールに正しく渡すために、パス名に改行文字を含めることができるとします。フォーマット文字列の末尾の代わりに使用する方が\n安全です。その後、GNUを使用して結果のNULL出口リストをソートし、sortGNUとGNUを使用して最も深いパス名を選択できます。これらのツールのGNUバリアントは、すべて非標準オプションを渡すとnullで終わるレコードを処理でき、標準ツールはすべてテキスト行を処理できます。tailcut-z

find . -type d -printf '%d\t%p\0' | sort -z -n | tail -z -n 1 | cut -z -f 2-

Final はcut文字列の先頭から数字の深さを削除します。

これにより、現在のディレクトリの下で最も長​​い(最も深い)ディレクトリパス名を含む標準出力にNULL終了文字列が提供されます。同じ深さの複数のパス名がある場合は、最後のパスに基づいてアルファベット順に並べられたパス名が提供されます。

おすすめ記事