溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux上如何實現(xiàn)文件操作

發(fā)布時間:2021-10-25 10:43:09 來源:億速云 閱讀:162 作者:小新 欄目:系統(tǒng)運維

這篇文章主要介紹了Linux上如何實現(xiàn)文件操作,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

按名稱列出文件

最簡單的方法是使用 ls 命令按名稱列出文件。畢竟,按名稱(字母數(shù)字順序)列出文件是默認(rèn)的。你可以選擇 ls(無細(xì)節(jié))或 ls  -l(大量細(xì)節(jié))來決定你看到什么。

$ 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 命令中。

按相反的名字順序排列文件

要按名稱反轉(zhuǎn)文件列表,請?zhí)砑?-r( 反轉(zhuǎn)(Reverse))選項。這就像把正常的列表倒過來一樣。

$ ls -r $ ls -lr

按文件擴展名列出文件

ls 命令不會按內(nèi)容分析文件類型,它只會處理文件名。不過,有一個命令選項可以按擴展名列出文件。如果你添加了 -X (  擴展名(eXtension))選項,ls 將在每個擴展名類別中按名稱對文件進(jìn)行排序。例如,它將首先列出沒有擴展名的文件(按字母數(shù)字順序),然后是擴展名為  .1、.bz2、.c 等的文件。

只列出目錄

默認(rèn)情況下,ls 命令將同時顯示文件和目錄。如果你想只列出目錄,你可以使用 -d( 目錄(Directory))選項。你會得到一個像這樣的列表:

$ ls -d */ 1/     backups/     modules/       projects/     templates/ 2/     html/        patches/       public/       videos/ bin/   new/         private/       save/

按大小排列文件

如果你想按大小順序列出文件,請?zhí)砑?-S( 大小(Size))選項。但請注意,這實際上不會顯示文件的大小(以及其他文件的細(xì)節(jié)),除非你還添加 -l(  長列表(Long listing))選項。當(dāng)按大小列出文件時,一般來說,看到命令在按你的要求做事情是很有幫助的。注意,默認(rèn)情況下是先顯示最大的文件。添加 -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               ^               |

事實上,你可以用這種方式對任何字段進(jìn)行排序(例如,年份)。只是要注意,如果你要對一個數(shù)字字段進(jìn)行排序,則要加上一個 n,如  -k5n,否則你將按字母數(shù)字順序進(jìn)行排序。這種排序技術(shù)對于文件內(nèi)容的排序也很有用,而不僅僅是用于列出文件。

按年份排列文件

使用 -t( 修改時間(Time modified))選項按年份順序列出文件 —— 它們的新舊程度。添加 -r  選項,讓最近更新的文件在列表中最后顯示。我使用這個別名來顯示我最近更新的文件列表。

$ alias recent='ls -ltr | tail -8'

請注意,文件的更改時間和修改時間是不同的。-c( 更改時間(time Changed))和  -t(修改時間)選項的結(jié)果并不總是相同。如果你改變了一個文件的權(quán)限,而沒有改變其他內(nèi)容,-c 會把這個文件放在 ls 輸出的頂部,而 -t  則不會。如果你想知道其中的區(qū)別,可以看看 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: -

按組別列出文件

要按關(guān)聯(lián)的組別對文件進(jìn)行排序,你可以將一個長列表的輸出傳給 sort 命令,并告訴它在第 4 列進(jìn)行排序。

$ 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

單行列出多個文件

有時,精簡的文件列表更適合手頭的任務(wù)。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' &hellip;

喜歡用空格?使用 --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 選項( 遞歸(Recursively))地列出文件,深入到整個目錄的深處。

$ 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 命令,對深度進(jìn)行限制或不限制。在這個命令中,我們指示 find 命令只在三個層次的目錄中查找:

$ find zzzzz -maxdepth 3 zzzzz zzzzz/zzzz zzzzz/zzzz/zzz zzzzz/zzzz/zzz/zz

選擇 ls 還是 find

當(dāng)你需要列出符合具體要求的文件時,find 命令可能是比 ls 更好的工具。

與 ls 不同的是,find 命令會盡可能地深入查找,除非你限制它。它還有許多其他選項和一個 -exec  子命令,允許在找到你要找的文件后采取一些特定的行動。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Linux上如何實現(xiàn)文件操作”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI