「du」の率直さと「tree」のインデントを組み合わせることはできないかと思います。ディレクトリサイズのリストが必要な場合:
du -hx -d2
...2つのレベルの深さを示し、すべてのサイズの要約は正直ですが、サブディレクトリのインデントはありません。一方:
tree --du -shaC -L 2
...圧入と色は大丈夫ですが、報告された寸法が偽です。実際の寸法を取得するには、次の手順を実行する必要があります。
tree --du -shaC
...つまり、「ツリー」がディレクトリ構造全体を表示できるようにした場合にのみ、実際のサイズを取得できます。実際に表示するサブディレクトリのレベルがどれくらいにかかわらず、常に正確なサイズの要約を持つことができるようにしたいです。私はしばしばそうします:
tree -du -shaC | grep "\[01;34m"
...ディレクトリを除くすべての項目を整え、素敵にインデントします。ただし、要約なしで表示を特定の数値レベルに制限する簡単な方法はありません。どのような方法がありますか?たぶん私は正しいスイッチを逃したかもしれません...
答え1
お支払いも可能NCDU: http://dev.yorhel.nl/ncdu
そのページには他の「類似プロジェクト」もリストされています。
gt5 - ncduと非常に似ていますが、アプローチは異なります。
tdu - 別のncursesベースの小型ディスク使用量可視化ユーティリティです。
TreeSize - ツリービューを使用するGTK。
Baobab - GTK、円グラフ、ツリービュー、ツリーマップ操作。 GNOMEに付属しています。
GdMap - ツリーマップが表示されるGTK。
Filelight - KDE、円グラフを使用。
QDirStat - KDE、ツリーマップ表示。
QDiskUsage - 円グラフを使用するQt。
xdiskusage - ツリーマップ表示を含むFLTK。
fsv - 3D可視化。
Philesight - FilelightのWebベースのレプリカです。
答え2
カラーコードを取得するためにgrepを使用する必要はありません。-d
オプションはですlist directories only
。
これはあなたが望むことを行うようです:
$ tree --du -d -shaC | grep -Ev '( *[^ ]* ){2}\['
.
├── [ 18] dir1
├── [ 30] dir2
├── [ 205] junk
│ ├── [ 18] dir1
│ ├── [ 30] dir2
│ └── [ 76] dir3
├── [ 119] merge
└── [ 20] stuff
4.4K used in 10 directories
このgrep
コマンドは、2つの空白(1つ以上の空白、空白ではなく空白、空白が続きます)、およびを含むすべての文字を削除します[
。
深さを1に設定するには、{}中括弧内のバインディングの数を{1}
代わりに変更します{2}
。同様に、深さを3に設定するにはに変更します{3}
。
これを次のシェル関数に変換できます。
mytreedu() {
local depth=''
while getopts "L:" opt ; do
case "$opt" in
L) depth="$OPTARG" ;;
esac
done
shift "$((OPTIND-1))"
if [ -z "$depth" ] ; then
tree --du -d -shaC "$@"
else
local PATTERN='( *[^ ]* ){'"$depth"'}\['
tree --du -d -shaC "$@" | grep -Ev "$PATTERN"
fi
}
これは、コマンドラインからオプションとその引数(存在する場合)をgetopts
「盗む」ために使用されます。コマンドラインにオプションがなくても大丈夫です。-L
tree
-L n
他のすべてのオプションとパラメータはtree
コマンドに渡されます。
このlocal PATTERN=...
行は実際には必要ありません。私はこれを1行に収め、改行を避けるためにこれを行いますU&L
。正規表現はすぐに実行でき、おそらくそうする必要がありますtree | grep ...
。
次のように実行します。
mytreedu
または
mytreedu -L 2 /path/to/dir/
答え3
あなたはそれを使用することができます義務
- LS_COLORS 環境変数に基づくカラー出力です。
- ファイルシステムツリーの表示
- 小さなファイルを集計する機能
- ファイルまたはディレクトリを除外する機能
- さまざまなディレクトリを比較する機能
- 高速でRustで書かれました
答え4
バージョン
$ tree --version;
# tree v2.1.1 © 1996 - 2023 by Steve Baker, Thomas Moore, Francesc Rocher,
# Florian Sesser, Kyosuke Tokoro
注文する
# -x - Stay on the current file-system only...
# -a - All files are printed... (those beginning with a dot `.')...
# -p - Print the file type and permissions for each file...
# -u - Print the username, or UID...
# -g - Print the group name, or GID...
# -h - Print the size of each file but in a more human readable way...
# -F - Append a `/' for directories, a `=' for socket files...
# -D - Print the date of the last modification time...
# --du - For each directory report its size as the accumulation of sizes...
# --dirsfirst - List directories before files...
# --charset - Set the character set to use when outputting...
# --sort - Sort the output by type instead of name...
# --timefmt - Prints... and formats the date according to the format string...
#
tree -xapughFD \
--du --dirsfirst \
--charset='ascii' --sort='size' --timefmt='%Y-%m-%d_%H-%M-%S' -- \
. \
| grep -P '^(?:\|\s{3}|\s{4}){0,1}(?:`|\|)\-\-';
grep
正規表現では{0,1}
(正直なところのようなもの?
)を「深く」使うことができます。たとえば、{0,3}
現在のディレクトリと最大3つのディレクトリを配置します。
はい
$ pwd -P;
/home/user
$ tree -xahpugFD --du --charset=ascii --dirsfirst --sort=size --timefmt='%Y-%m-%d_%H-%M-%S' -- '/usr/share/vlc' | grep -P '^(?:\|\s{3}|\s{4}){0,1}(?:`|\|)\-\-';
|-- [drwxr-xr-x root root 520K 2022-10-23_09-19-24] lua/
| `-- [drwxr-xr-x root root 516K 2022-10-23_09-19-24] http/
|-- [drwxr-xr-x root root 210K 2022-10-23_09-20-57] skins2/
| |-- [drwxr-xr-x root root 4.1K 2022-10-23_09-20-57] fonts/
| |-- [-rw-r--r-- root root 160K 2022-03-13_10-00-10] default.vlt
| |-- [-rw-r--r-- root root 31K 2022-03-13_10-00-10] winamp2.xml
| |-- [-rw-r--r-- root root 10K 2022-03-13_10-00-10] skin.dtd
| `-- [-rw-r--r-- root root 167 2022-03-13_10-00-10] skin.catalog
|-- [drwxr-xr-x root root 6.1K 2022-10-23_09-19-24] utils/
| |-- [-rwxr-xr-x root root 873 2022-03-13_10-00-10] gnome-vlc-default.sh*
| |-- [-rwxr-xr-x root root 620 2022-03-13_10-00-10] audio-vlc-default.sh*
| `-- [-rwxr-xr-x root root 620 2022-03-13_10-00-10] video-vlc-default.sh*
`-- [-rw-r--r-- root root 71K 2022-03-13_10-00-10] vlc.ico