Mac下使用tree命令展示檔案樹
背景
在寫程式碼文件的時候,經常會用到展示專案架構,這時候如果可以有命令直接打印出目錄樹那就再好不過了,免的截圖了。
思路
網上找了下,果然是有這種工具的,Mac - tree命令。
Mac預設是沒有tree
命令的,需要手工安裝下:
brew install tree
安裝好之後,看下幫助文件:
$ tree --help usage: tree [-acdfghilnpqrstuvxACDFJQNSUX] [-H baseHREF] [-T title ] [-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] [--filelimit[=]#] [--si] [--timefmt[=]<f>] [--sort[=]<name>] [--matchdirs] [--ignore-case] [--fromfile] [--] [<directory list>] ------- Listing options ------- -aAll files are listed. -dList directories only. -lFollow symbolic links like directories. -fPrint the full path prefix for each file. -xStay on current filesystem only. -L levelDescend only level directories deep. -RRerun tree when max dir level reached. -P patternList only those files that match the pattern given. -I patternDo not list files that match the given pattern. --ignore-case Ignore case when pattern matching. --matchdirsInclude directory names in -P pattern matching. --noreportTurn off file/directory count at end of tree listing. --charset XUse charset X for terminal/HTML and indentation line output. --filelimit # Do not descend dirs with more than # files in them. --timefmt <f> Print and format time according to the format <f>. -o filenameOutput to file instead of stdout. ------- File options ------- -qPrint non-printable characters as '?'. -NPrint non-printable characters as is. -QQuote filenames with double quotes. -pPrint the protections for each file. -uDisplays file owner or UID number. -gDisplays file group owner or GID number. -sPrint the size in bytes of each file. -hPrint the size in a more human readable way. --siLike -h, but use in SI units (powers of 1000). -DPrint the date of last modification or (-c) status change. -FAppends '/', '=', '*', '@', '|' or '>' as per ls -F. --inodesPrint inode number of each file. --devicePrint device ID number to which each file belongs. ------- Sorting options ------- -vSort files alphanumerically by version. -tSort files by last modification time. -cSort files by last status change time. -ULeave files unsorted. -rReverse the order of the sort. --dirsfirstList directories before files (-U disables). --sort XSelect sort: name,version,size,mtime,ctime. ------- Graphics options ------- -iDon't print indentation lines. -APrint ANSI lines graphic indentation lines. -SPrint with CP437 (console) graphics indentation lines. -nTurn colorization off always (-C overrides). -CTurn colorization on always. ------- XML/HTML/JSON options ------- -XPrints out an XML representation of the tree. -JPrints out an JSON representation of the tree. -H baseHREFPrints out HTML format with baseHREF as top directory. -T stringReplace the default HTML title and H1 header with string. --nolinksTurn off hyperlinks in HTML output. ------- Input options ------- --fromfileReads paths from files (.=stdin) ------- Miscellaneous options ------- --versionPrint version and exit. --helpPrint usage and this help message and exit. --Options processing terminator.
可以新增的引數很多,那麼該用那些呢?
-
在一個
python
專案中,先只加資料夾名看下:$ tree app app ├── __init__.py ├── __pycache__ │└── __init__.cpython-37.pyc ├── main │├── __init__.py │├── __pycache__ ││├── __init__.cpython-37.pyc ││├── functions.cpython-37.pyc ││└── views.cpython-37.pyc │├── functions.py │└── views.py └── module ├── __init__.py ├── __pycache__ │├── __init__.cpython-37.pyc │├── functions.cpython-37.pyc │└── views.cpython-37.pyc ├── functions.py └── views.py 5 directories, 14 files
-
pyc
是編譯的臨時檔案,我們要把刪掉,看下說明,可以用-I
來:$ tree -I *.pyc app app ├── __init__.py ├── __pycache__ ├── main │├── __init__.py │├── __pycache__ │├── functions.py │└── views.py └── module ├── __init__.py ├── __pycache__ ├── functions.py └── views.py 5 directories, 7 files
-
__pycache__
也是臨時檔案,也把刪掉:tree -I *.pyc -I __pycache__app app ├── __init__.py ├── main │├── __init__.py │├── functions.py │└── views.py └── module ├── __init__.py ├── functions.py └── views.py 2 directories, 7 files
可以看出
-I
是可以加多個的,每個-I
後面加一個pattern
。在上面的例子中,其實所有的
.pyc
檔案都在__pychache__
資料夾下,可以直接忽略該資料夾即可:$ tree -I __pycache__app app ├── __init__.py ├── main │├── __init__.py │├── functions.py │└── views.py └── module ├── __init__.py ├── functions.py └── views.py 2 directories, 7 files
-
那麼如果只要資料夾的結構呢?
-d
引數$ tree -d app app ├── __pycache__ ├── main │└── __pycache__ └── module └── __pycache__ 5 directories
-
忽略
__pycache__
資料夾:$ tree -d -I __pycache__ app app ├── main └── module 2 directories
總結
通過brew
安裝tree
工具之後,即可在命令列中使用tree
命令展示檔案資料夾目錄樹:
-
直接加對應的資料夾來展示某資料夾範圍內的檔案樹
$ tree app
-
使用
-I
引數來忽略不展示的檔案或子資料夾,可新增多個-I
$ tree -I *.pyc -I __pycache__app
-
使用
-d
來僅展示資料夾樹$ tree -d app
-
多引數可以混合使用
$ tree -d -I __pycache__ app
-
更多的引數使用,可以在有需要的時候參考
--help
內容$ tree --help