2011-12-11 37 views
4

可以使用反斜槓字符\來區分特殊字符。但是,我想將整個期間視爲普通字符來操作隱藏文件夾。例如:如何訪問文件以句點'。'開頭在外殼中

ls -lh .

它會列出當前目錄。但是,我想列出所有隱藏的文件夾。我希望它可以與du -h一起使用,所以我知道隱藏文件夾消耗的磁盤空間。

+0

du -h會報告隱藏文件的使用情況。名稱以'。'開頭的文件不會隱藏到杜。 –

回答

7

其名稱以.開頭的文件和目錄僅在(a)ls默認忽略它們和(b)通配符擴展排除它們的意義上是「隱藏的」。在這兩種情況下,如果明確引用它們,您可以看到點文件。 *擴展爲所有非點文件; .*擴展爲所有點文件。

(其它工具和命令也可以將它們視爲隱藏;例如,圖形用戶界面的文件管理器,如鸚鵡螺通常不顯示默認點文件,但有經常向他們展示一個選項。)

ls -a覆蓋對名稱以.開頭的文件的特殊處理。 ls -A列出「隱藏」文件和文件夾,但不包括.(此目錄)和..(父目錄);某些版本的ls可能不支持-A。我知道,du命令不會將點文件視爲隱藏。 du -h應顯示從當前目錄開始的整個目錄樹。 (嘗試在一個小的目錄樹,以確保您的行爲這種方式。)

編輯:

我已經證實,至少在GNU的coreutils版本的du沒有把文件或目錄,其名字以.開頭;沒有隱藏的東西。

例如,此腳本:

#!/bin/sh 

mkdir -p .dot/.dot .dot/nodot nodot/.dot nodot/nodot 
du -h 

產生我的系統(具體數字取決於文件系統的性質,並且是風馬牛不相及的當前的討論)在此輸出:

4.0K ./.dot/.dot 
4.0K ./.dot/nodot 
12K  ./.dot 
4.0K ./nodot/.dot 
4.0K ./nodot/nodot 
12K  ./nodot 
32K  . 

這是否符合您的要求?如果不是,你能更清楚地解釋你正在尋找什麼?您是否想列出全部目錄,無論他們的名字是否以.開頭?你想只列出「隱藏」目錄嗎?對於上述腳本創建的目錄結構,您需要輸出什麼內容?

+0

我只想計算隱藏目錄的大小。我試過'du -h | grep。*',並且似乎過濾掉了除隱藏文件之外的其他文件/目錄。但是輸出也包含文件內容。 – Amumu

+1

'grep。*'是一個無操作符(它匹配包含零個或多個字符的每一行)。至於'du'的行爲,我今天晚些時候會試着去看看。 –

+0

「我只想計算隱藏目錄的大小。」非隱藏目錄下的隱藏目錄('foo/.bar')怎麼辦?隱藏目錄下的隱藏文件和非隱藏文件有什麼關係?無論如何,我知道沒有直接的方法來做你想做的事情。杜'只是忽略隱藏和非隱藏目錄之間的區別;例如,只計算名稱以'X'開頭的目錄也是一樣的問題。定製工具可能是最好的解決方案。你可以修改'du'的GNU Coreutils版本。知道*爲什麼*你想這樣做也可能有幫助。 –

1

這個問題錯了地方,但它是很簡單的:

ls -lhd .*

+0

那麼你可以考慮shell腳本的一部分,所以它不會是無效的。無論如何,有沒有其他方式,而不是把星號'*'?我希望它可以用'du -h' – Amumu

0

什麼ls -lh .*? (這可能會回答你的問題)