Linux下 ls 命令的高階用法8例
Linux下 ls 命令的高階用法8例
在Linux下,ls這個命令大家肯定太熟悉了,良許相信只要是Linux工程師,每天都會離不開這個命令,而且一天會使用個幾百次。但是,除了 ls -l
以外,你還知 ls 的哪些高階用法呢?良許今天為大家介紹 ls 命令的8種高階用法。
假如我們有這樣的一個資料夾,我們用tree命令檢視它的目錄結構:
用法1:列出/home/alvin/test_dir目錄下所有檔案及目錄的詳細資料
命令:
ls -lR /home/alvin/test_dir/
結果:
[alvin@VM_0_16_centos test_dir]$ ls -lR /home/alvin/test_dir/
/home/alvin/test_dir/:
total 28
-rw-rw-r-- 1 alvin alvin 37 Nov 18 09:12 atb_aux.c
-rw-rw-r-- 1 alvin alvin 8 Nov 18 09:12 atb_can.c
-rw-rw-r-- 1 alvin alvin 24 Nov 18 09:12 atb_orch.c
-rw-rw-r-- 1 alvin alvin 5 Nov 18 09:12 atb_ota.c
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 Makefile
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src
/home/alvin/test_dir/include:
total 0
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 a.h
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 b.h
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 c.h
/home/alvin/test_dir/output:
total 0
-rwxrwxr-x 1 alvin alvin 0 Nov 18 09:12 app
/home/alvin/test_dir/src:
total 0
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 a.c
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 b.c
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 c.c
在這裡,-l
選項大家應該比較熟悉,是以列表的形式顯示結果的意思。而對於 -R
選項,意思是遞迴處理,將指定目錄下的所有檔案及子目錄一併處理。
用法2:列出/home/alvin/test_dir目錄下以atb開頭的所有檔案的詳細內容
命令:
ls -l atb*
結果:
[alvin@VM_0_16_centos test_dir]$ ls -l atb*
-rw-rw-r-- 1 alvin alvin 37 Nov 18 09:12 atb_aux.c
-rw-rw-r-- 1 alvin alvin 8 Nov 18 09:12 atb_can.c
-rw-rw-r-- 1 alvin alvin 24 Nov 18 09:12 atb_orch.c
-rw-rw-r-- 1 alvin alvin 5 Nov 18 09:12 atb_ota.c
用法3:只列出目錄下的子目錄
- 方法1:
命令
ls -F /home/alvin/test_dir | grep /$
結果:
[alvin@VM_0_16_centos test_dir]$ ls -F /home/alvin/test_dir | grep /$
include/
output/
src/
其中:-F
選項表示在每個檔名後附上一個字元以說明改檔案的型別。“*
”:表示可執行的普通檔案;“/
”:表示目錄;“@
”:表示符號連結;“|
”:表示FIFOs;“=
”:表示套接字。
/$
其實是一個正規表示式,表示以 /
結尾。grep /$
表示過濾出以 /
結尾的結果,也就是子目錄。
- 方法2:
命令:
ls -p /home/alvin/test_dir | grep /$
結果:
[alvin@VM_0_16_centos test_dir]$ ls -p | grep /$
include/
output/
src/
其中:-p
選項與 -F
選項類似,也是在每個檔名後附上一個字元以說明改檔案的型別。
- 方法3:
命令:
ls -l /home/alvin/test_dir | grep "^d"
結果:
[alvin@VM_0_16_centos test_dir]$ ls -l /home/alvin/test_dir | grep "^d"
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src
其中:^d
也是一個正規表示式,表示以 d
開頭。grep "^d"
表示過濾出以 d
開頭的結果,而 ls -l
所列出來的結果,首位如果是 d
的話,表示這個檔案是個目錄,這樣就可以過濾出子目錄了。
- 方法4:
命令:
ls -d */
結果:
[alvin@VM_0_16_centos test_dir]$ ls -d */
include/ output/ src/
其中:-d
選項表示將目錄象檔案一樣顯示,而不顯示其下的檔案。
用法4:按時間順序列出目錄下的檔案,越新越排後面。
命令:
ls -ltr
結果:
[alvin@VM_0_16_centos test_dir]$ ls -lrt
total 28
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 Makefile
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include
-rw-rw-r-- 1 alvin alvin 5 Nov 18 09:12 atb_ota.c
-rw-rw-r-- 1 alvin alvin 24 Nov 18 09:12 atb_orch.c
-rw-rw-r-- 1 alvin alvin 8 Nov 18 09:12 atb_can.c
-rw-rw-r-- 1 alvin alvin 37 Nov 18 09:12 atb_aux.c
其中:-t
選項表示以檔案修改時間排序,越新的越靠前。-r
選項表示對結果進行反向排序,二者結合的話表示以修改時間排序,越新的越靠後。
用法5:以檔案大小進行排序
命令:
ls -lhS
結果:
[alvin@VM_0_16_centos test_dir]$ ls -lhS
total 28K
drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 include
drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 output
drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 src
-rw-rw-r-- 1 alvin alvin 37 Nov 18 09:12 atb_aux.c
-rw-rw-r-- 1 alvin alvin 24 Nov 18 09:12 atb_orch.c
-rw-rw-r-- 1 alvin alvin 8 Nov 18 09:12 atb_can.c
-rw-rw-r-- 1 alvin alvin 5 Nov 18 09:12 atb_ota.c
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 Makefile
其中:-h
選項表示以可讀選項顯示,否則檔案大小是預設以位元組數顯示,比如:4873位元組,你知道是多少嗎?加了 -h
選項系統就幫你換算成以k或者其它單位的結果。
-S
選項表示以檔案大小進行排序,檔案越大越靠前。想要檔案小者靠前的話,加個 -r
選項就行。
用法6:統計當前目錄下的檔案數和目錄數
- 統計檔案數:
命令:
ls -l | grep "^-" | wc -l
結果:
[alvin@VM_0_16_centos test_dir]$ ls -l | grep "^-" | wc -l
5
其中:^-
表示以 -
開頭,即普通檔案,ls -l | grep "^-"
過濾出普通檔案,再用 wc -l
統計過濾出的普通檔案的個數。
- 統計目錄數:
命令:
ls -l | grep "^d" | wc -l
結果:
[alvin@VM_0_16_centos test_dir]$ ls -l | grep "^d" | wc -l
3
其中:^d
表示以 d
開頭,即目錄,ls -l | grep "^d"
過濾出目錄,再用 wc -l
統計過濾出的目錄的個數。
用法7:列出所有檔案的絕對路徑
命令:
ls | sed "s:^:`pwd`/:"
結果:
[alvin@VM_0_16_centos test_dir]$ ls | sed "s:^:`pwd`/:"
/home/alvin/test_dir/atb_aux.c
/home/alvin/test_dir/atb_can.c
/home/alvin/test_dir/atb_orch.c
/home/alvin/test_dir/atb_ota.c
/home/alvin/test_dir/include
/home/alvin/test_dir/Makefile
/home/alvin/test_dir/output
/home/alvin/test_dir/src
其中:sed "s:^:``pwd``/:"
表示在行首增加 pwd
(即檔案所在路徑),與檔名組合成絕對路徑。
用法8:列出當前目錄下的所有檔案(包括隱藏檔案)的絕對路徑, 對目錄不做遞迴
在上一個用法裡,對於隱藏檔案(即以 .
開頭的檔案)是不作處理的,如果我們需要對隱藏檔案也作處理的話,就需要使用下面這個命令:
find $PWD -maxdepth 1 | xargs ls -ld
結果:
[alvin@VM_0_16_centos test_dir]$ find $PWD -maxdepth 1 | xargs ls -ld
drwxrwxr-x 5 alvin alvin 4096 Nov 18 17:30 /home/alvin/test_dir
-rw-rw-r-- 1 alvin alvin 37 Nov 18 09:12 /home/alvin/test_dir/atb_aux.c
-rw-rw-r-- 1 alvin alvin 8 Nov 18 09:12 /home/alvin/test_dir/atb_can.c
-rw-rw-r-- 1 alvin alvin 24 Nov 18 09:12 /home/alvin/test_dir/atb_orch.c
-rw-rw-r-- 1 alvin alvin 5 Nov 18 09:12 /home/alvin/test_dir/atb_ota.c
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/include
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 /home/alvin/test_dir/Makefile
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/output
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/src
其中:find $PWD -maxdepth 1
限定了在當前層級(即不遞迴),再對find結果傳遞給 ls -ld
作引數,這樣就將當前目錄下的所有檔案補齊了所在路徑。
更多精彩內容,請關注公眾號良許Linux,公眾內回覆1024可免費獲得5T技術資料,包括:Linux,C/C++,Python,樹莓派,嵌入式,Java,人工智慧,等等。公眾號內回覆進群,邀請您進高手如雲技術交流群。
最後,最近很多小夥伴找我要Linux學習路線圖,於是我根據自己的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。無論你是面試還是自我提升,相信都會對你有幫助!目錄如下:
免費送給大家,只求大家金指給我點個贊!
也希望有小夥伴能加入我,把這份電子書做得更完美!
有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4830/viewspace-2826248/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux下more命令高階用法Linux
- Linux下mv命令高階用法Linux
- Linux 命令“ls ” 的用法Linux
- Linux高階命令——cut命令用法Linux
- linux ls命令常用用法Linux
- Linux ls命令最詳細用法介紹Linux
- 模擬linux下的ls -l命令Linux
- Linux ls命令Linux
- linux ls 命令Linux
- 精通 Linux 的 ls 命令Linux
- Linux高階命令Linux
- Linux系統中ls的用法Linux
- Linux下crontab命令的用法Linux
- Linux下echo命令的用法Linux
- Linux下touch命令的用法Linux
- Linux下umask命令的用法Linux
- Linux 命令 ls命令系列(精華)Linux
- Linux下history命令用法Linux
- linux下date命令用法Linux
- Linux基礎命令---lsLinux
- Linux ls命令詳解Linux
- Nant的高階用法NaN
- Linux下find命令的用法(轉)Linux
- 【轉】Linux下history命令配置及高階應用Linux
- linux下 ls 排序Linux排序
- 超實用的 Linux 高階命令!Linux
- Linux——基礎命令用法(下)Linux
- Nginx 高階用法Nginx
- play高階用法
- Linux 常用基本命令 -lsLinux
- linux命令下jq的用法簡介Linux
- PING命令的高階用法, 菜鳥駭客專區(轉)
- linux下使用ls命令時遇到的一個怪異現象Linux
- ls 命令
- ls命令
- 每天一個linux命令(1):ls命令Linux
- 每天一個 Linux 命令(1):ls 命令Linux
- linux下xargs命令用法詳解Linux