把 Linux 上的文件列表和排序玩出花來
Linux 命令可以提供文件的詳細信息,也可以自定義顯示的文件列表,甚至可以深入到文件系統的目錄中,只要你願意看。
在 Linux 系統上,有許多方法可以列出文件並顯示它們的信息。這篇文章回顧了一些提供文件細節的命令,並提供了自定義文件列表的選項,以滿足你的需求。
大多數命令都會列出單個目錄中的文件,而其他命令則可以深入到文件系統的目錄中,只要你願意看。
當然,最主要的文件列表命令是 ls
。然而,這個命令有大量的選項,可以只查找和列出你想看的文件。另外,還有 find
可以幫助你進行非常具體的文件搜索。
按名稱列出文件
最簡單的方法是使用 ls
命令按名稱列出文件。畢竟,按名稱(字母數字順序)列出文件是默認的。你可以選擇 ls
(無細節)或 ls -l
(大量細節)來決定你看到什麼。
$ ls | head -6
8pgs.pdf
Aesthetics_Thank_You.pdf
alien.pdf
Annual_Meeting_Agenda-20190602.pdf
bigfile.bz2
bin
$ ls -l | head -6
-rw-rw-r-- 1 shs shs 10886 Mar 22 2019 8pgs.pdf
-rw-rw-r-- 1 shs shs 284003 May 11 2019 Aesthetics_Thank_You.pdf
-rw-rw-r-- 1 shs shs 38282 Jan 24 2019 alien.pdf
-rw-rw-r-- 1 shs shs 97358 May 19 2019 Annual_Meeting_20190602.pdf
-rw-rw-r-- 1 shs shs 18115234 Apr 16 17:36 bigfile.bz2
drwxrwxr-x 4 shs shs 8052736 Jul 10 13:17 bin
如果你想一次查看一屏的列表,可以將 ls
的輸出用管道送到 more
命令中。
按相反的名字順序排列文件
要按名稱反轉文件列表,請添加 -r
( 反轉 )選項。這就像把正常的列表倒過來一樣。
$ ls -r
$ ls -lr
按文件擴展名列出文件
ls
命令不會按內容分析文件類型,它只會處理文件名。不過,有一個命令選項可以按擴展名列出文件。如果你添加了 -X
( 擴展名 )選項,ls
將在每個擴展名類別中按名稱對文件進行排序。例如,它將首先列出沒有擴展名的文件(按字母數字順序),然後是擴展名為 .1
、.bz2
、.c
等的文件。
只列出目錄
默認情況下,ls
命令將同時顯示文件和目錄。如果你想只列出目錄,你可以使用 -d
( 目錄 )選項。你會得到一個像這樣的列表:
$ ls -d */
1/ backups/ modules/ projects/ templates/
2/ html/ patches/ public/ videos/
bin/ new/ private/ save/
按大小排列文件
如果你想按大小順序列出文件,請添加 -S
( 大小 )選項。但請注意,這實際上不會顯示文件的大小(以及其他文件的細節),除非你還添加 -l
( 長列表 )選項。當按大小列出文件時,一般來說,看到命令在按你的要求做事情是很有幫助的。注意,默認情況下是先顯示最大的文件。添加 -r
選項可以反過來(即 ls -lSr
)。
$ ls -lS
total 959492
-rw-rw-r-- 1 shs shs 357679381 Sep 19 2019 sav-linux-free-9.tgz
-rw-rw-r-- 1 shs shs 103270400 Apr 16 17:38 bigfile
-rw-rw-r-- 1 shs shs 79117862 Oct 5 2019 Nessus-8.7.1-ubuntu1110_amd64.deb
按屬主列出文件
如果你想按屬主列出文件(例如,在一個共享目錄中),你可以把 ls
命令的輸出傳給 sort
,並通過添加 -k3
來按第三個欄位排序,從而挑出屬主一欄。
$ ls -l | sort -k3 | more
total 56
-rw-rw-r-- 1 dory shs 0 Aug 23 12:27 tasklist
drwx------ 2 gdm gdm 4096 Aug 21 17:12 tracker-extract-files.121
srwxr-xr-x 1 root root 0 Aug 21 17:12 ntf_listenerc0c6b8b4567
drwxr-xr-x 2 root root 4096 Aug 21 17:12 hsperfdata_root
^
|
事實上,你可以用這種方式對任何欄位進行排序(例如,年份)。只是要注意,如果你要對一個數字欄位進行排序,則要加上一個 n
,如 -k5n
,否則你將按字母數字順序進行排序。這種排序技術對於文件內容的排序也很有用,而不僅僅是用於列出文件。
按年份排列文件
使用 -t
( 修改時間 )選項按年份順序列出文件 —— 它們的新舊程度。添加 -r
選項,讓最近更新的文件在列表中最後顯示。我使用這個別名來顯示我最近更新的文件列表。
$ alias recent='ls -ltr | tail -8'
請注意,文件的更改時間和修改時間是不同的。-c
( 更改時間 )和 -t
(修改時間)選項的結果並不總是相同。如果你改變了一個文件的許可權,而沒有改變其他內容,-c
會把這個文件放在 ls
輸出的頂部,而 -t
則不會。如果你想知道其中的區別,可以看看 stat
命令的輸出。
$ stat ckacct
File: ckacct
Size: 200 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 829041 Links: 1
Access: (0750/-rwxr-x---) Uid: ( 1000/ shs) Gid: ( 1000/ shs)
Access: 2020-08-20 16:10:11.063015008 -0400
Modify: 2020-08-17 07:26:34.579922297 -0400 <== content changes
Change: 2020-08-24 09:36:51.699775940 -0400 <== content or permissions changes
Birth: -
按組別列出文件
要按關聯的組別對文件進行排序,你可以將一個長列表的輸出傳給 sort
命令,並告訴它在第 4 列進行排序。
$ ls -l | sort -k4
按訪問日期列出文件
要按訪問日期(最近訪問的日期在前)列出文件,使用 -ltu
選項。u
強制「按訪問日期」排列順序。
$ ls -ltu
total 959500
-rwxr-x--- 1 shs shs 200 Aug 24 09:42 ckacct <== most recently used
-rw-rw-r-- 1 shs shs 1335 Aug 23 17:45 lte
單行列出多個文件
有時,精簡的文件列表更適合手頭的任務。ls
命令甚至有這方面的選項。為了在儘可能少的行上列出文件,你可以使用 --format=comma
來用逗號分隔文件名,就像這個命令一樣:
$ ls --format=comma
1, 10, 11, 12, 124, 13, 14, 15, 16pgs-landscape.pdf, 16pgs.pdf, 17, 18, 19,
192.168.0.4, 2, 20, 2018-12-23_OoS_2.pdf, 2018-12-23_OoS.pdf, 20190512_OoS.pdf,
'2019_HOHO_application working.pdf' …
喜歡用空格?使用 --format=across
代替。
$ ls --format=across z*
z zip zipfiles zipfiles1.bat zipfiles2.bat
zipfiles3.bat zipfiles4.bat zipfiles.bat zoom_amd64.deb zoomap.pdf
zoom-mtg
增加搜索的深度
雖然 ls
一般只列出單個目錄中的文件,但你可以選擇使用 -R
選項( 遞歸 )地列出文件,深入到整個目錄的深處。
$ ls -R zzzzz | grep -v "^$"
zzzzz:
zzzz
zzzzz/zzzz:
zzz
zzzzz/zzzz/zzz:
zz
zzzzz/zzzz/zzz/zz:
z
zzzzz/zzzz/zzz/zz/z:
sleeping
另外,你也可以使用 find
命令,對深度進行限制或不限制。在這個命令中,我們指示 find
命令只在三個層次的目錄中查找:
$ find zzzzz -maxdepth 3
zzzzz
zzzzz/zzzz
zzzzz/zzzz/zzz
zzzzz/zzzz/zzz/zz
選擇 ls 還是 find
當你需要列出符合具體要求的文件時,find
命令可能是比 ls
更好的工具。
與 ls
不同的是,find
命令會儘可能地深入查找,除非你限制它。它還有許多其他選項和一個 -exec
子命令,允許在找到你要找的文件後採取一些特定的行動。
總結
ls
命令有很多用於列出文件的選項。了解一下它們。你可能會發現一些你會喜歡的選項。
via: https://www.networkworld.com/article/3572590/11-ways-to-list-and-sort-files-on-linux.html
作者:Sandra Henry-Stocker 選題:lujun9972 譯者:wxy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive