【bash】使用du命令、find命令等清理电脑


du 命令

du 命令(Disk Usage)是用于查看文件或目录磁盘使用情况的命令,它能够列出指定文件或目录的大小。

基本语法如下:

1
du [OPTION]... [FILE]...

常用选项包括:

  • -h, --human-readable:以易读的方式显示文件大小,以 KB、MB、GB 等单位。
  • -s, --summarize:仅显示总大小,不列出每个子目录的大小。
  • -c, --total:在所有显示行的末尾输出总和。
  • -k:以 KB 为单位显示文件大小。
  • -m:以 MB 为单位显示文件大小。
  • -g:以 GB 为单位显示文件大小。

一些常用的用法示例:

  1. 查看当前目录大小

    1
    du -h

    这将显示当前目录及其所有子目录的大小,并以易读的方式显示。

  2. 查看指定文件或目录大小

    1
    du -h /path/to/file_or_directory

    这将显示指定文件或目录的大小。

  3. 查看指定目录大小并列出每个子目录的大小

    1
    du -h /path/to/directory

    这将列出指定目录下每个子目录的大小,以及总体的大小。

  4. 查看当前目录下最大的文件或目录

    1
    du -ah | sort -rh | head -n 10

    这将列出当前目录下最大的 10 个文件或目录,并按照大小降序排列。

  5. 查看当前目录下总大小

    1
    du -sh

    这将显示当前目录的总大小,而不列出每个子目录的大小。

  6. 查看当前目录及其所有子目录的总大小

    1
    du -sh *

    这将显示当前目录及其所有子目录的总大小,但不列出每个子目录的大小。

  7. du -adu -d不能並存。因為du -d只能級聯查找文件夾,而du -a可以查找文件卻無法指定深度。

sort命令

sort 命令是用于对文本文件内容进行排序的命令。它可以按照字母顺序、数字大小等方式对文本进行排序,并且支持多种选项以满足不同的需求。

當你對文件內容使用 sort 命令時,sort 會逐行讀取文件的內容,然後將這些行按照你指定的方式進行排序。

基本语法如下:

1
sort [OPTION]... [FILE]...

常用选项包括:

  • -r, --reverse:逆序排序,即降序排序。
  • -n, --numeric-sort:按照数值大小排序。
  • -f, --ignore-case:忽略大小写。
  • -u, --unique:去重,去除重复的行。
  • -k, --key=POS1[,POS2]:指定以哪个字段进行排序,默认情况下是以整行作为一个字段。
  • -t, --field-separator=SEP:指定字段分隔符,默认是空格。
  • -h, --human-numeric-sort:以易读的方式对数字进行排序,例如将 “2K” 排在 “10M” 之前。

一些常用的用法示例:

  1. 按照字母顺序排序

    1
    sort file.txt

    这将按照字母顺序对 file.txt 中的内容进行排序。

    例如,考慮以下數字列表:

    1
    2
    3
    4
    10
    2
    100
    5

    如果按照字母順序排序,它們將按照字符串的第一個字符來排序,即按照1、2、5、1。這將導致以下順序:

    1
    2
    3
    4
    10
    100
    2
    5

    但如果按照數值大小排序,則會按照數字的大小來排序。這將導致以下順序:

    1
    2
    3
    4
    2
    5
    10
    100

    sort 命令中,使用 -n 選項可以實現按照數值大小排序。

  2. 按照数字大小排序

    1
    sort -n file.txt

    这将按照数字大小对 file.txt 中的内容进行排序。

  3. 逆序排序

    1
    sort -r file.txt

    这将按照字母顺序对 file.txt 中的内容进行逆序排序。

  4. 忽略大小写排序

    1
    sort -f file.txt

    这将按照字母顺序对 file.txt 中的内容进行排序,忽略大小写。

  5. 去重

    1
    sort -u file.txt

    这将对 file.txt 中的内容进行排序,并且去除重复的行。

  6. 按照第二列数字大小排序

    1
    sort -nk2 file.txt

    这将按照第二列数字大小对 file.txt 中的内容进行排序。

  7. 使用逗号作为字段分隔符

    1
    sort -t',' -k2 file.txt

    这将使用逗号作为字段分隔符,并且按照第二列的内容进行排序。

find命令搜索文件大小

基本的 find 命令语法是:

1
find <path> <options> <actions>

其中:

  • <path>:指定要搜索的路径。
  • <options>:用于控制搜索行为的选项。
  • <actions>:用于指定搜索结果的操作,比如 -exec

下面是一些常用的 find 命令选项和用法:

  1. 搜索文件名

    1
    find . -name "filename"

    这会在当前目录及其子目录中搜索文件名为 “filename” 的文件。

  2. 按类型搜索

    • 搜索文件:

      1
      find . -type f
    • 搜索目录:

      1
      find . -type d
  3. 按大小搜索

    • 搜索大于指定大小的文件:

      1
      find . -size +10M
    • 搜索小于指定大小的文件:

      1
      find . -size -10M
  4. 按权限搜索

    1
    find . -perm 644

    这会搜索所有权限设置为 644 的文件。

  5. 执行操作

    • 使用 -exec 执行命令:

      1
      find . -name "*.txt" -exec cat {} \;

      这会找到所有 .txt 文件并执行 cat 命令来查看文件内容。

    • 执行其他操作,比如删除文件:

      1
      find . -type f -name "*.tmp" -delete

      这会删除所有以 .tmp 结尾的文件。

使用 du 命令以及sort命令整理與查找 mac 系統文件

  1. 查找一級目錄大小,按大小排序

如果你想要按大小降序排序显示一级目录的文件大小,你可以将 du 命令与 sort 命令结合使用。

1
du -h -d 1 | sort -rh
  • du -h -d 1:显示当前目录下每个一级文件和目录的總大小。
  • -h:以易读的方式显示文件大小,不加-h會將以原始字節的方式顯示文件大小。
  • -d 1:指定深度为 1,表示只显指定目录的一级子目录或文件的大小。
  • sort -rh:对 du 命令排序,-r 表示逆序(降序),-h 表示按照易读的数字格式进行比较。
  1. 使用find 查找當前目錄下的一級文件夾及文件
1
find . -maxdepth 1

find . -maxdepth 1: 這個部分告訴 find 命令在當前目錄 (.) 下搜索,但僅搜索一級目錄,不搜索子目錄。 -maxdepth 1 限制搜索深度為一級目錄。

  1. 使用 find -exec 結合 du 命令查找當前目錄下的所有一級文件夾及文件
1
find . -maxdepth 1 -exec du -sh {} +
  • -exec 選項表示要執行一個額外命令,du -sh 則是計算目錄大小的命令,而 {} 代表找到的每個一級目錄的占位符,+ 則告訴 find 命令將所有找到的目錄一次性傳遞給 du 命令,而不是對每個目錄單獨執行 du 命令。
  • du -sh 會顯示當前目錄的總大小,而不包括子文件夾的大小。 -s 選項表示總和, -h 選項表示以易讀的方式(如 KB、MB、GB)顯示大小。
  • 這個命令的意思是,先通過find查找了當前一級目錄下的所有文件及文件夾,在通過du命令查找這些文件及文件夾的大小。由於find查找出的一級目錄此時會被du命令二次查找,即查找出二級目錄,所以需要用du -sh來搜索當前目錄即可,而不需要再次深度查找。
  1. 使用sort 排序
1
find . -maxdepth 1 -exec du -sh {} + | sort -hr

其中,常用的選項包括:

  • -r:表示反向排序,即降序排列。
  • -h:表示按照易讀的大小進行,例如 KB、MB、GB。

刪除文件

  1. 使用 rm 命令

    使用 rm 命令刪除文件。rm 是 “remove” 的縮寫。

    1
    rm 文件名

    例如,刪除名為 example.txt 的文件:

    1
    rm example.txt
  2. 使用 rm 命令刪除多個文件

    你可以使用 rm 命令來一次刪除多個文件。

    1
    rm 文件1 文件2 文件3

    例如:

    1
    rm file1.txt file2.txt file3.txt
  3. 使用通配符刪除文件

    你可以使用通配符來刪除符合特定模式的文件。

    1
    rm *.txt

    這將刪除當前目錄中所有擴展名為 .txt 的文件。

  4. 刪除目錄及其內容

    如果你刪除目錄及內容,你可以使用 -r-R 選項來遞歸刪除。

    1
    rm -r 目錄名

    例如,刪除名為 folder 的目錄及內容:

    1
    rm -r folder
  5. -rf-r 的區別

  • -r 選項(或 --recursive)單獨使用時,表示遞歸刪除,它會刪除指定目錄下的所有文件及子目錄,包括子目錄中的文件和子子目錄中的內容。但是,如果遇到無法刪除的文件或目錄,會提示用戶確認。
  • -f 選項(或 --force)單獨使用時,表示強制刪除,它會忽略不存在的文件和不可寫的文件的權限,不會提示用戶進行二次確認的步驟。即使文件或目錄不存在,也不會顯示任何錯誤信息。

當你組合使用 -r-f 時,即 -rf,表示強制遞歸刪除。這意味著無論文件是否存在、是否只讀,以及是否包含子目錄,都將被刪除,而且不會提示用戶確認。