回覆列表
  • 1 # 產品經理老胡

    老胡的看法:

    要在Linux系統中遞迴統計某個目錄下的目錄數,老胡這裡有三種方法:第一種是使用tree命令,簡單快捷;第二種是使用find進行遞迴查詢該目錄下的所有檔案和目錄,然後進行篩選;第三種是使用rsync命令進行統計,比較另類。下面老胡一一進行介紹。

    一、使用tree命令進行統計

    tree實際上是一個以樹狀列印目錄和檔案結構的小程式,大多數Linux發行版都需要先安裝之後才能夠使用:

    apt安裝:

    apt install tree

    yum安裝:

    yum install tree

    pacman安裝:

    pacman -S tree

    使用:使用管道+grep,“directories”作為關鍵字,即可以遞迴的方式將當前目錄下的目錄數統計出來。

    二、使用find+wc命令

    find是Linux下一個強大的檔案查詢命令,如果想實現統計目錄的功能,需要用到find的-type指令:

    find . -type d

    -type d指定了查詢的物件型別是目錄,如果要查詢的物件型別是檔案,就需要使用-type f。這條命令後面需要接一個管道,利用wc -l來按行統計結果的數量:

    find . -type d | wc -l

    這樣統計的數量比tree要多,是因為find將隱藏目錄和.也計算在內了。

    三、使用rsync命令

    rsync是一個神奇的命令,可以用來複制檔案,還可以用來統計目錄數量。

    為了完成統計的任務,需要用到rsync的--stats開關,開啟狀態顯示,另外還需要使用-n和-a選項,分別實現顯示傳輸列表和遞迴遍歷。

    哪一個最快?

    老胡用time來對三個命令執行的過程進行計時,結果如下:

    命令執行順序依次為tree、find和rsync,可以看出,在遞迴統計目錄個數這個任務中,find的速度是最快的。

    總結一下,遞迴統計某個目錄下的目錄個數老胡給出了三個辦法,可以使用tree、find+wc -l、rsync三種不同的實現方式。其中find+wc -l的速度最快。另外這三種統計手段同樣適用於檔案。

  • 中秋節和大豐收的關聯?
  • 肺氣腫肺、大泡慢阻肺一定會發展為肺心病嗎?