在Linux系統(tǒng)我們有時候需要了解磁盤空間的占用情況,及時的刪除一些不必要的文件,從而避免將磁盤壓爆。下面本文就集中介紹一下Linux面查詢磁盤空間的使用情況的若干命令。
Linux df命令用于顯示目前在Linux系統(tǒng)上的文件系統(tǒng)的磁盤使用情況統(tǒng)計。該函數(shù)包含很多選項,以實現(xiàn)不同的功能。
選項列表
-a或--all:包含全部的文件系統(tǒng); --block-size=<區(qū)塊大小>:以指定的區(qū)塊大小來顯示區(qū)塊數(shù)目; -h或--human-readable:以可讀性較高的方式來顯示信息; -H或--si:與-h參數(shù)相同,但在計算時是以1000 Bytes為換算單位而非1024 Bytes; -i或--inodes:顯示inode的信息; -k或--kilobytes:指定區(qū)塊大小為1024字節(jié); -l或--local:僅顯示本地端的文件系統(tǒng); -m或--megabytes:指定區(qū)塊大小為1048576字節(jié); --no-sync:在取得磁盤使用信息前,不要執(zhí)行sync指令,此為預設值; -P或--portability:使用POSIX的輸出格式; --sync:在取得磁盤使用信息前,先執(zhí)行sync指令; -t<文件系統(tǒng)類型>或--type=<文件系統(tǒng)類型>:僅顯示指定文件系統(tǒng)類型的磁盤信息; -T或--print-type:顯示文件系統(tǒng)的類型; -x<文件系統(tǒng)類型>或--exclude-type=<文件系統(tǒng)類型>:不要顯示指定文件系統(tǒng)類型的磁盤信息; --help:顯示幫助; --version:顯示版本信息。
使用示例
顯示已經(jīng)掛載的分區(qū)列表,容量單位為KB,這種方式顯示的可讀性要差一些。
df
顯示已掛載的分區(qū)列表,可以通過-h選項提高可讀性。
df -h
還有很多參數(shù),這里不一一介紹了。
Linux ls命令用于顯示指定工作目錄下內容內容(列出目前工作目錄所含之文件及子目錄)。包含的信息量很大,可以通過下面的選項組合來完成。
選項列表
-a:顯示所有檔案及目錄(ls內定將檔案名或目錄名稱為“.”的視為影藏,不會列出); -A:顯示除影藏文件“.”和“..”以外的所有文件列表; -C:多列顯示輸出結果。這是默認選項; -l:與“-C”選項功能相反,所有輸出信息用單列格式輸出,不輸出為多列; -F:在每個輸出項后追加文件的類型標識符,具體含義:“*”表示具有可執(zhí)行權限的普通文件,“/”表示目錄,“@”表示符號鏈接,“|”表示命令管道FIFO,“=”表示sockets套接字。當文件為普通文件時,不輸出任何標識符; -b:將文件中的不可輸出的字符以反斜線“”加字符編碼的方式輸出; -c:與“-lt”選項連用時,按照文件狀態(tài)時間排序輸出目錄內容,排序的依據(jù)是文件的索引節(jié)點中的ctime字段。與“-l”選項連用時,則排序的一句是文件的狀態(tài)改變時間; -d:僅顯示目錄名,而不顯示目錄下的內容列表。顯示符號鏈接文件本身,而不顯示其所指向的目錄列表; -f:此參數(shù)的效果和同時指定“aU”參數(shù)相同,并關閉“l(fā)st”參數(shù)的效果; -i:顯示文件索引節(jié)點號(inode)。一個索引節(jié)點代表一個文件; --file-type:與“-F”選項的功能相同,但是不顯示“*”; -k:以KB(千字節(jié))為單位顯示文件大小; -l:以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、權限模式、硬連接數(shù)、所有者、組、文件大小和文件的最后修改時間等; -m:用“,”號區(qū)隔每個文件和目錄的名稱; -n:以用戶識別碼和群組識別碼替代其名稱; -r:以文件名反序排列并輸出目錄內容列表; -s:顯示文件和目錄的大小,以區(qū)塊為單位; -t:用文件和目錄的更改時間排序; -L:如果遇到性質為符號鏈接的文件或目錄,直接列出該鏈接所指向的原始文件或目錄; -R:遞歸處理,將指定目錄下的所有文件及子目錄一并處理; --full-time:列出完整的日期與時間; --color[=WHEN]:使用不同的顏色高亮顯示不同類型的。
使用示例
下面命令組合以占用空間大小排列文件和目錄
ls -lSr |more
Linux du命令用于顯示目錄或文件的大小。du會顯示指定的目錄或文件所占用的磁盤空間總和。
選項列表
-a或-all 顯示目錄中個別文件的大小。 -b或-bytes 顯示目錄或文件大小時,以byte為單位。 -c或--total 除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和。 -k或--kilobytes 以KB(1024bytes)為單位輸出。 -m或--megabytes 以MB為單位輸出。 -s或--summarize 僅顯示總計,只列出最后加總的值。 -h或--human-readable 以K,M,G為單位,提高信息的可讀性。 -x或--one-file-xystem 以一開始處理時的文件系統(tǒng)為準,若遇上其它不同的文件系統(tǒng)目錄則略過。 -L<符號鏈接>或--dereference<符號鏈接> 顯示選項中所指定符號鏈接的源文件大小。 -S或--separate-dirs 顯示個別目錄的大小時,并不含其子目錄的大小。 -X<文件>或--exclude-from=<文件> 在<文件>指定目錄或文件。 --exclude=<目錄或文件> 略過指定的目錄或文件。 -D或--dereference-args 顯示指定符號鏈接的源文件大小。 -H或--si 與-h參數(shù)相同,但是K,M,G是以1000為換算單位。 -l或--count-links 重復計算硬件鏈接的文件。
使用示例
估算目錄 'dir_name' 已經(jīng)使用的磁盤空間'
du -sh dir_name
以容量大小為依據(jù)依次顯示文件和目錄
du -sk * | sort -rn
RPM(全稱是RedHat Package Manager,RedHat軟件包管理工具)是在Fedora、RedHat和CentOS等發(fā)行版Linux下的的軟件包管理工具。這個軟件類似Windows里面的“添加/刪除程序”。我們可以用這個工具進行軟件的安裝和卸載等操作,同時我們可以用這個命令方便的知道每個軟件包占用的空間。
下面命令顯示已安裝的rpm包所使用的空間,并且以大小為依據(jù)排序
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n
DEB安裝包管理工具是Linux下軟件管理的另外一個陣營。它可以Debian和Ubuntu等發(fā)行版的軟件管理。
下面命令顯示已安裝的deb包所使用的空間,并且以大小為依據(jù)排序
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
至此完成了本文的介紹,肯定還有一些沒有介紹到的,請大家多提意見。本文后續(xù)進行補充,以方便大家學習。
查詢本地磁盤指定文件目錄下的PDF及JPG圖片文件,寫入工作表中,調用前面圖紙打印函數(shù)打印圖片文件,這在工作中是需要的。下例是查詢PDF及JPG圖片文件函數(shù),執(zhí)行時彈出對話框讓用戶選擇磁盤文件夾,自動搜索該文件夾的的圖片文件,并寫入工作表的A列。
將圖片文件寫入工作表(從A列的第2行)
'查找PDF及JPG圖片文件,把圖紙文件名及路徑寫入工作表指定單元格位置
Function CheckPDFAndJPGFiles()
Dim folderPath As String
Dim FileName As String
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' 彈出文件夾選擇框
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "請選擇一個文件夾"
.Show
If .SelectedItems.Count = 0 Then
dd = MsgBox("未選擇文件夾。", vbExclamation, "提示信息")
Exit Function ' 如果沒有選擇文件夾,則退出
End If
folderPath = .SelectedItems(1)
End With
' 設置工作表
Set ws = ThisWorkbook.Sheets("圖紙")
'從第2行開始寫入圖片文件,先寫入PDF文件
i = 2
' 遍歷文件夾中的所有PDF和JPG文件
FileName = Dir(folderPath & "\*.pdf") ' 首先查找PDF文件
Do While FileName <> ""
ws.Cells(i, "A").Value = folderPath & "\" & FileName
i = i + 1
FileName = Dir() ' 繼續(xù)查找下一個PDF文件
Loop
' 獲取A列的最后一行,寫入JPG文件
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
i = lastRow + 1
' 重復上述過程,查找JPG文件
FileName = Dir(folderPath & "\*.jpg") ' 查找JPG文件
Do While FileName <> ""
ws.Cells(i, "A").Value = folderPath & "\" & FileName
i = i + 1
FileName = Dir() ' 繼續(xù)查找下一個JPG文件
Loop
End Function
編寫過程測試
Sub test()
Dim PDFAndJPGfile As String
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Integer
'調用圖片查詢函數(shù),將磁盤圖片文件寫入指定的工作表
CheckPDFAndJPGFiles
' 設置工作表
Set ws = ThisWorkbook.Sheets("圖紙")
' 獲取A列的最后一行
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow
PDFAndJPGfile = ws.Cells(i, "A").Value
'調用圖片打印函數(shù)
PrintPDFAndJPGUsingAPI PDFAndJPGfile
Next i
End Sub
附:圖片打印函數(shù)