自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下 ls 命令的高級用法8例

系統(tǒng) Linux
在Linux下,ls這個命令大家肯定太熟悉了,但是,除了 ls -l 以外,你還知 ls 的哪些高級用法呢?良許今天為大家介紹 ls 命令的8種高級用法。

在Linux下,ls這個命令大家肯定太熟悉了,良許相信只要是Linux工程師,每天都會離不開這個命令,而且一天會使用個幾百次。但是,除了 ls -l 以外,你還知 ls 的哪些高級用法呢?良許今天為大家介紹 ls 命令的8種高級用法。

假如我們有這樣的一個文件夾,我們用tree命令查看它的目錄結構:

用法1:列出/home/alvin/test_dir目錄下所有文件及目錄的詳細資料

命令:

  1. ls -lR /home/alvin/test_dir/ 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -lR /home/alvin/test_dir/ 
  2. /home/alvin/test_dir/: 
  3. total 28 
  4. -rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 atb_aux.c 
  5. -rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 atb_can.c 
  6. -rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 atb_orch.c 
  7. -rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 atb_ota.c 
  8. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include 
  9. -rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 Makefile 
  10. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output 
  11. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src 
  12. /home/alvin/test_dir/include: 
  13. total 0 
  14. -rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 a.h 
  15. -rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 b.h 
  16. -rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 c.h 
  17. /home/alvin/test_dir/output: 
  18. total 0 
  19. -rwxrwxr-x 1 alvin alvin 0 Nov 18 09:12 app 
  20. /home/alvin/test_dir/src: 
  21. total 0 
  22. -rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 a.c 
  23. -rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 b.c 
  24. -rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 c.c 

在這里,-l 選項大家應該比較熟悉,是以列表的形式顯示結果的意思。而對于 -R 選項,意思是遞歸處理,將指定目錄下的所有文件及子目錄一并處理。

用法2:列出/home/alvin/test_dir目錄下以atb開頭的所有文件的詳細內容

命令:

  1. ls -l atb* 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -l atb* 
  2. -rw-rw-r-- 1 alvin alvin 37 Nov 18 09:12 atb_aux.c 
  3. -rw-rw-r-- 1 alvin alvin  8 Nov 18 09:12 atb_can.c 
  4. -rw-rw-r-- 1 alvin alvin 24 Nov 18 09:12 atb_orch.c 
  5. -rw-rw-r-- 1 alvin alvin  5 Nov 18 09:12 atb_ota.c 

用法3:只列出目錄下的子目錄

(1) 方法1:

命令

  1. ls -F /home/alvin/test_dir | grep /$ 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -F /home/alvin/test_dir | grep /$ 
  2. include/ 
  3. output/ 
  4. src/ 

其中:-F選項表示在每個文件名后附上一個字符以說明改文件的類型。“*”:表示可執(zhí)行的普通文件;“/”:表示目錄;“@”:表示符號鏈接;“|”:表示FIFOs;“=”:表示套接字。

/$ 其實是一個正則表達式,表示以 / 結尾。grep /$ 表示過濾出以 / 結尾的結果,也就是子目錄。

(2) 方法2:

命令:

  1. ls -p /home/alvin/test_dir | grep /$ 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -p | grep /$ 
  2. include/ 
  3. output/ 
  4. src/ 

其中:-p 選項與 -F 選項類似,也是在每個文件名后附上一個字符以說明改文件的類型。

(3) 方法3:

命令:

  1. ls -l /home/alvin/test_dir | grep "^d" 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -l /home/alvin/test_dir | grep "^d" 
  2. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include 
  3. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output 
  4. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src 

其中:^d 也是一個正則表達式,表示以 d 開頭。grep "^d" 表示過濾出以 d 開頭的結果,而 ls -l 所列出來的結果,首位如果是 d 的話,表示這個文件是個目錄,這樣就可以過濾出子目錄了。

(4) 方法4:

命令:

  1. ls -d */ 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -d */ 
  2. include/  output/  src/ 

其中:-d 選項表示將目錄象文件一樣顯示,而不顯示其下的文件。

用法4:按時間順序列出目錄下的文件,越新越排后面。

命令:

  1. ls -ltr 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -lrt 
  2. total 28 
  3. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src 
  4. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output 
  5. -rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 Makefile 
  6. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include 
  7. -rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 atb_ota.c 
  8. -rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 atb_orch.c 
  9. -rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 atb_can.c 
  10. -rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 atb_aux.c 

其中:-t 選項表示以文件修改時間排序,越新的越靠前。-r 選項表示對結果進行反向排序,二者結合的話表示以修改時間排序,越新的越靠后。

用法5:以文件大小進行排序

命令:

  1. ls -lhS 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -lhS 
  2. total 28K 
  3. drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 include 
  4. drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 output 
  5. drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 src 
  6. -rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 atb_aux.c 
  7. -rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 atb_orch.c 
  8. -rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 atb_can.c 
  9. -rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 atb_ota.c 
  10. -rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 Makefile 

其中:-h 選項表示以可讀選項顯示,否則文件大小是默認以字節(jié)數顯示,比如:4873字節(jié),你知道是多少嗎?加了 -h 選項系統(tǒng)就幫你換算成以k或者其它單位的結果。

-S 選項表示以文件大小進行排序,文件越大越靠前。想要文件小者靠前的話,加個 -r 選項就行。

用法6:統(tǒng)計當前目錄下的文件數和目錄數

(1) 統(tǒng)計文件數:

命令:

  1. ls -l | grep "^-" | wc -l 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -l | grep "^-" | wc -l 

其中:^- 表示以 - 開頭,即普通文件,ls -l | grep "^-" 過濾出普通文件,再用 wc -l統(tǒng)計過濾出的普通文件的個數。

(2) 統(tǒng)計目錄數:

命令:

  1. ls -l | grep "^d" | wc -l 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls -l | grep "^d" | wc -l 

其中:^d 表示以 d 開頭,即目錄,ls -l | grep "^d" 過濾出目錄,再用 wc -l 統(tǒng)計過濾出的目錄的個數。

用法7:列出所有文件的絕對路徑

命令:

  1. ls | sed "s:^:`pwd`/:" 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ ls | sed "s:^:`pwd`/:" 
  2. /home/alvin/test_dir/atb_aux.c 
  3. /home/alvin/test_dir/atb_can.c 
  4. /home/alvin/test_dir/atb_orch.c 
  5. /home/alvin/test_dir/atb_ota.c 
  6. /home/alvin/test_dir/include/home/alvin/test_dir/Makefile 
  7. /home/alvin/test_dir/output/home/alvin/test_dir/src 

其中:sed "s:^:``pwd``/:" 表示在行首增加 pwd(即文件所在路徑),與文件名組合成絕對路徑。

用法8:列出當前目錄下的所有文件(包括隱藏文件)的絕對路徑, 對目錄不做遞歸

在上一個用法里,對于隱藏文件(即以 . 開頭的文件)是不作處理的,如果我們需要對隱藏文件也作處理的話,就需要使用下面這個命令:

  1. find $PWD -maxdepth 1 | xargs ls -ld 

結果:

  1. [alvin@VM_0_16_centos test_dir]$ find $PWD -maxdepth 1 | xargs ls -ld 
  2. drwxrwxr-x 5 alvin alvin 4096 Nov 18 17:30 /home/alvin/test_dir 
  3. -rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 /home/alvin/test_dir/atb_aux.c 
  4. -rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 /home/alvin/test_dir/atb_can.c 
  5. -rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 /home/alvin/test_dir/atb_orch.c 
  6. -rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 /home/alvin/test_dir/atb_ota.c 
  7. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/include 
  8. -rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 /home/alvin/test_dir/Makefile 
  9. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/output 
  10. drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/src 

其中:find $PWD -maxdepth 1 限定了在當前層級(即不遞歸),再對find結果傳遞給 ls -ld 作參數,這樣就將當前目錄下的所有文件補齊了所在路徑。

本文授權轉載自公眾號「良許Linux」。良許,世界500強外企Linux開發(fā)工程師,公眾號里分享大量Linux干貨,歡迎關注!

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2020-08-16 20:42:52

more命令文件Linux

2019-07-29 19:30:54

Linux命令ls命令

2019-04-19 14:00:55

Linuxkillall命令

2023-11-23 19:27:56

2020-07-09 08:09:21

Linuxdiff命令

2009-09-28 11:21:17

Linux教程ls命令Linux

2020-12-07 10:48:31

Linuxls命令stat命令

2023-10-09 07:33:50

Linuxls 命令

2023-11-28 13:15:00

Linuxsed工具

2017-08-15 17:09:31

Linux命令

2017-12-27 10:20:01

Linux ls命令實用范例

2024-01-24 14:42:33

Linux操作系統(tǒng)系統(tǒng)工具

2015-03-25 10:36:57

lsLinux

2017-07-13 12:43:41

Linux命令date

2020-12-21 10:55:41

Linux系統(tǒng)ls命令

2022-05-05 21:47:32

Linuxls 命令

2016-09-27 10:05:11

LinuxShell命令

2009-12-16 09:40:38

Linux終端Linux命令

2010-06-22 09:28:31

Linux at命令

2013-11-15 16:07:26

Linux dfLinux命令
點贊
收藏

51CTO技術棧公眾號