深入了解 Linux tree 命令及其常用选项:Linux如何显示目录结构和文件大小
深入了解 Linux tree
命令及其常用选项
在 Linux 系统中,tree
命令是一个非常实用的工具,用于以树状结构显示目录及文件的层级关系。它不仅帮助我们可视化文件系统的结构,还可以显示文件大小、修改时间等信息。接下来,我们将详细介绍 tree
命令的主要作用、常见选项以及高阶用法,帮助大家更高效地使用该命令。
在 Linux 或 macOS 上,如果没有安装 tree
,可以先安装它:
sudo apt-get install tree # Ubuntu/Debian 系统
brew install tree # macOS
一、tree
命令的基本作用
tree
命令的作用是以树形结构列出目录及其内容。该命令的输出展示了每个目录下的文件和子目录,同时以缩进的方式显示层级结构。通过这种方式,我们能够更加直观地查看文件系统的结构。
示例:
假设我们有一个目录 ~/.cache/huggingface/hub/models--google--gemma-2-2b
,运行以下命令:
tree ~/.cache/huggingface/hub/models--google--gemma-2-2b
输出可能如下:
~/.cache/huggingface/hub/models--google--gemma-2-2b
├── [4.0K] blobs
│ ├── [ 24K] 05c7984e8eee8ced110a5b0c9efe23e53ce379b8
│ ├── [4.6G] 1425aa066ec77e3eb79aac14a5bdea3ebcec46aa5c96cd40608c5c1fd70d193d
│ ├── [ 45K] 2357fc1a512dc3881eb99b9df3ef8e97ef7ffd51
│ ├── [ 17M] 3f289bc05132635a8bc7aca7aa21255efd5e18f3710f43e3cdb96bcd41be4922
│ ├── [459M] 4e08abc64d1767fdacd2c94da7f2ec4b8c65b25b19a53e87d19dc432901b5f02
│ ├── [4.0M] 61a7b147390c64585d6c3543dd6fc636906c9af3865a5548f27f31aee1d4c8e2
│ ├── [ 636] 8d6368f7e735fbe4781bf6e956b7c6ad0586df80
│ ├── [4.6G] 96c111d3dcdbde9271595e463b5d9f7fc4810ad8b79e736309c0a1833e6c0d35
│ ├── [ 818] 9983200362411f3e251b4c8ce28afad7e3996c1e
│ └── [ 168] e9f2b419d37547ea30e2f193ff04443472c78cba
├── [4.0K] refs
│ └── [ 40] main
└── [4.0K] snapshots
└── [4.0K] c5ebcd40d208330abc697524c919956e692655cf
├── [ 52] config.json -> ../../blobs/9983200362411f3e251b4c8ce28afad7e3996c1e
├── [ 52] generation_config.json -> ../../blobs/e9f2b419d37547ea30e2f193ff04443472c78cba
├── [ 76] model-00001-of-00003.safetensors -> ../../blobs/1425aa066ec77e3eb79aac14a5bdea3ebcec46aa5c96cd40608c5c1fd70d193d
├── [ 76] model-00002-of-00003.safetensors -> ../../blobs/96c111d3dcdbde9271595e463b5d9f7fc4810ad8b79e736309c0a1833e6c0d35
├── [ 76] model-00003-of-00003.safetensors -> ../../blobs/4e08abc64d1767fdacd2c94da7f2ec4b8c65b25b19a53e87d19dc432901b5f02
├── [ 52] model.safetensors.index.json -> ../../blobs/05c7984e8eee8ced110a5b0c9efe23e53ce379b8
├── [ 52] special_tokens_map.json -> ../../blobs/8d6368f7e735fbe4781bf6e956b7c6ad0586df80
├── [ 52] tokenizer_config.json -> ../../blobs/2357fc1a512dc3881eb99b9df3ef8e97ef7ffd51
├── [ 76] tokenizer.json -> ../../blobs/3f289bc05132635a8bc7aca7aa21255efd5e18f3710f43e3cdb96bcd41be4922
└── [ 76] tokenizer.model -> ../../blobs/61a7b147390c64585d6c3543dd6fc636906c9af3865a5548f27f31aee1d4c8e2
4 directories, 21 files
从输出可以看到,tree
不仅展示了目录结构,还列出了每个文件和目录的大小。
二、常见选项介绍
1. -s
选项:显示文件大小
-s
选项可以让 tree
命令在输出中显示每个文件和目录的大小(单位为字节)。对于大型目录结构,这个选项特别有用,可以让我们快速看到哪些文件占用了大量空间。
示例命令:
tree -s ~/.cache/huggingface/hub/models--google--gemma-2-2b
输出会显示每个文件的大小:
~/.cache/huggingface/hub/models--google--gemma-2-2b
├── [ 4096] blobs
│ ├── [ 24224] 05c7984e8eee8ced110a5b0c9efe23e53ce379b8
│ ├── [ 4992576136] 1425aa066ec77e3eb79aac14a5bdea3ebcec46aa5c96cd40608c5c1fd70d193d
...
2. -h
选项:以人类可读的格式显示大小
-h
选项用于以人类可读的格式显示文件大小,如 KB、MB、GB 等。这个选项非常有用,特别是在文件非常大时,可以避免显示为字节(如 459M 或 4.6G),更容易理解。
示例命令:
tree -sh ~/.cache/huggingface/hub/models--google--gemma-2-2b
输出格式化后的文件大小:
~/.cache/huggingface/hub/models--google--gemma-2-2b
├── [4.0K] blobs
│ ├── [ 24K] 05c7984e8eee8ced110a5b0c9efe23e53ce379b8
│ ├── [4.6G] 1425aa066ec77e3eb79aac14a5bdea3ebcec46aa5c96cd40608c5c1fd70d193d
...
3. -L
选项:限制显示层级
-L
选项可以限制显示目录树的层级深度。例如,如果只希望显示前两层目录,可以使用 -L 2
。
示例命令:
tree -L 2 ~/.cache/huggingface/hub/models--google--gemma-2-2b
输出会显示到指定的层级:
~/.cache/huggingface/hub/models--google--gemma-2-2b
├── blobs
├── refs
└── snapshots
4. -f
选项:显示完整路径
-f
选项可以让 tree
命令输出完整的文件路径,而不是相对路径。这个选项对于查看绝对路径非常有用。
示例命令:
tree -f ~/.cache/huggingface/hub/models--google--gemma-2-2b
输出会显示完整的文件路径:
~/.cache/huggingface/hub/models--google--gemma-2-2b
├── ~/.cache/huggingface/hub/models--google--gemma-2-2b/blobs
├── ~/.cache/huggingface/hub/models--google--gemma-2-2b/refs
└── ~/.cache/huggingface/hub/models--google--gemma-2-2b/snapshots
5. -a
选项:包括隐藏文件
默认情况下,tree
命令不会显示以点 .
开头的隐藏文件和目录。使用 -a
选项可以包括这些文件和目录。
示例命令:
tree -a ~/.cache/huggingface/hub/models--google--gemma-2-2b
三、高阶用法
1. 管道和其他命令结合使用
tree
命令的输出可以通过管道传递给其他命令进行进一步处理。例如,使用 grep
查找特定的文件类型或目录。
示例命令:
tree ~/.cache/huggingface/hub/models--google--gemma-2-2b | grep ".safetensors"
这个命令会列出所有 .safetensors
文件。
2. 输出到文件
通过 -o
选项,tree
命令可以将输出保存到文件中,便于后续查看或分享。
示例命令:
tree -o output.txt ~/.cache/huggingface/hub/models--google--gemma-2-2b
这会将树形结构输出保存到 output.txt
文件中。
四、总结
tree
是一个非常强大的命令,通过不同的选项,我们可以定制化地查看文件系统的结构。了解常见的选项和用法后,我们可以更高效地操作文件系统,特别是在处理大型目录结构时,tree
是不可或缺的工具。
后记
2024年12月30日15点29分于上海,在GPT4o mini大模型辅助下完成。