在Linux中,怎樣只顯示隱藏文件?
在Linux中顯示隱藏文件很簡(jiǎn)單,這樣使用 ls 命令即可:
這樣你就能看到被隱藏的文件,其文件名稱是以一個(gè)點(diǎn) . 開頭的。
但是這樣的話,你會(huì)看到所有文件,包括隱藏的,和正常的(非隱藏)文件,都會(huì)被顯示出來。
怎樣才能只顯示隱藏的文件,而不顯示正常的文件呢?
目前沒有現(xiàn)成的命令可用。不過可以通過另外一種方式,比如使用管道重定向組合ls命令。
只顯示隱藏的文件和目錄
要只顯示隱藏的文件和目錄,最簡(jiǎn)單的方法是使用 ls -a 顯示隱藏的文件,然后使用 grep 過濾以 . 開頭的文件。
^表示以 . 開頭。字符 . 需要使用反斜杠 \ 轉(zhuǎn)義,因?yàn)樗鼘儆谔厥庾址K械膬?nèi)容都需要用引號(hào)包括進(jìn)來。上述命令告訴 grep 只顯示以點(diǎn)開頭的結(jié)果。
我們來看個(gè)例子,如下是一個(gè)目錄下的正常文件:
然后我對(duì)結(jié)果進(jìn)行過濾,只顯示隱藏的文件和目錄:
結(jié)果中包含了一個(gè)點(diǎn) . ,表示當(dāng)前目錄,還有兩個(gè)點(diǎn)的 .. 表示父目錄。你可以使用 -A 選項(xiàng)來代替 -a ,這樣就可以過濾掉這兩個(gè)目錄。我們?cè)僭囈淮危?
這樣看起來,好多了,是吧?
這樣還有一個(gè)小問題,雖然你能看到隱藏的文件,但是你無法區(qū)分它們到底是文件,還是目錄。
我們還有另外一個(gè)方法。
替代方案
以長列表的方式顯示隱藏的文件和目錄(這樣可以區(qū)分它們是文件還是目錄),可以使用如下方法:
結(jié)果如下:
這是什么原理?首先 .* 是一個(gè) shell 通配符,表示所有以 . 開頭的文件,基本上你可以這樣理解:將上述命令看成是如下語句:
選項(xiàng) d 是很重要的,它告訴 ls 命令如果有目錄的話只列出目錄名稱,而不要它的子目錄。否則的話,輸出結(jié)果會(huì)包含其子目錄中的內(nèi)容。
如果你不想要列出 . 和 .. 這兩個(gè)目錄,可以使用如下命令:
注意到 .!(|.) 了吧,這是一個(gè)正則表達(dá)式。嘆號(hào) ! 表示“非”,豎線 | 表示“或者”。(|.) 表示無或點(diǎn) .。當(dāng)你在前面加上一個(gè)嘆號(hào) ! 則表示不要“無”或 . 。它們結(jié)合在一起, .!(|.) 就是一個(gè)正則表達(dá)式,表示 . 后面跟某個(gè)東西(因此可排除單點(diǎn) .),但也排除后跟一個(gè)點(diǎn) .(因此排除雙點(diǎn) ..)。
只顯示隱藏的文件(而不要隱藏的目錄)
只顯示隱藏文件而不顯示隱藏目錄非常容易,使用如下命令:
顯示隱藏的文件和目錄,然后過濾掉以 d 開頭的條目(即目錄)。
當(dāng)然,還有其他的方法,比如使用 find 命令。如果你有別的方法,歡迎討論。