Linux Command 系列:Tree

Linux 命令能夠用浩瀚如煙來形容,那怎麼辦呢,我也很絕望啊,平時工做接觸到的也就那麼幾個命令,那就平時本身多攢點,關鍵時候用上了就是物超所值 :)php

最近想學的東西一大堆,今天晚上沒啥事,有時間能夠靜下來學習一波,然而當雙手放在鍵盤上準備大幹一場的時候,忽然腦子卻一片空白,不知道該先學啥。沉默了一會,越想越亂,難道今天又不在學習狀態??? node

心無法平靜,仍是學點短小精悍的實用知識好了,Linux 的命令多而雜,學會單獨一個命令不須要花多大的精力,就能使用它的基本用法了。git

那麼今天就先學一個實用的 Linux 命令:treegithub

撒花 ~~ sql

tree 會將一個目錄的全部內容以樹狀圖的格式列出來。這是一個很是整齊簡潔且實用的程序,你能夠再命令行中使用它來查看你的文件系統的結構。json

$ tree -d -L 2
.
├── app
│   ├── Console
│   ├── Exceptions
│   ├── Http
│   └── Providers
├── bootstrap
│   └── cache
├── config

8 directories

描述

tree 是一個遞歸列舉目錄內容的程序,它以縮進長短不一樣的方式展示不一樣層級的文件(若是設置了 LS_COLORS 環境變量的話,展示的內容會帶有顏色,更加的好看美觀)。bootstrap

最簡單的用法就是直接使用 tree,不帶任何參數,默認會將當前目錄的內容所有列舉出來(若是這個目錄的文件不少仍是不要建議這麼幹,由於你會看到很長很長很長的一條樹狀結構,而後你發現也看不出啥來)。bash

tree 打印出來的內容最後一行總會顯示出它列舉出來的文件或目錄的數量,因此也能夠變相的將其用做統計某一個目錄下有多少個文件的用途,就想下面這樣~php7

$ tree
.
├── ClassLoader.php
├── LICENSE
├── autoload_classmap.php
├── autoload_files.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── autoload_static.php
└── installed.json

0 directories, 9 files

默認狀況下,若是列舉的內容中存在軟連接的話,tree 會將其指向的實際路徑也打印出來,就像這樣:app

├── php -> ../Cellar/php71/7.1.7_19/bin/php

語法

學命令最痛苦的就是它的參數,一般的作法就是把經常使用的幾個參數記住,想不起來了就 man 一下(這裏推薦一款與 man 很像的工具(tldr),但比 man 更方便和簡潔,實用性更強~)

tree [-adfgilnopqrstuxACDFNS] [-L level [-R]] [-H baseHREF] [-T title] 
     [-o filename] [--nolinks] [-P pattern] [-I pattern] [--inodes] 
     [--device] [--noreport] [--dirsfirst] [--version] [--help] 
     [--filelimit #] [--si] [--prune] [--du] [--timefmt format] 
     [directory ...]

它的可選項也不少,下面只列舉一些經常使用的哦。

參數 描述
--help 列舉使用說明
--version 輸出版本信息
-a 默認不會輸出隱藏文件,好比那些以.開頭的文件,帶上這個參數就能把全部文件都打印出來
-d 只會輸出目錄,而不會輸出文件
-L level 最大展現的目錄層級
-I pattern 不顯示那些匹配給定通配符的文件
-P pattern 只顯示那些匹配給定通配符的文件
-p 額外顯示目錄和文件的讀寫權限

例子

tree

以樹狀圖的格式顯示當前目錄的內容,包括子目錄。相似下面的圖表:

.
├── assets
│   ├── data
│   │   ├── data1.bin
│   │   ├── data2.sql
│   │   └── data3.inf
│   └── images
│       ├── background.jpg
│       ├── icon.gif
│       └── logi.jpg
├── config.dat
├── program.exe
└── readme.txt

3 directories, 9 files

tree -d -L 2

只顯示目錄,且層級不超過2層。輸出以下:

.
└── assets
    ├── data
    └── images

3 directories
tree -I 'data*|con???.dat'

過濾掉以 data 開頭的文件,或者以 con 開頭,緊跟三個任意字符,以 .dat 結尾的文件。輸出以下:

.
├── assets
│   └── images
│       ├── background.jpg
│       ├── icon.gif
│       └── logi.jpg
├── program.exe
└── readme.txt

2 directories, 5 files
tree -P 't*'

與 -I 參數恰好相反,只顯示匹配通配符的文件,在這裏就是隻顯示以 t 開頭的文件。輸出以下:

.
└── assets
    ├── data
    └── images

3 directories, 0 files
tree -P 't*' -p

額外顯示目錄和文件的讀寫權限。輸出以下:

.
└── [drwxr-xr-x]  assets
    ├── [drwxr-xr-x]  data
    └── [drwxr-xr-x]  images

3 directories, 0 files

今天是否是 Get 了一個新知識點了呢~~


參考連接


首發於個人我的博客:StephenCode,歡迎交流~

相關文章
相關標籤/搜索