如何使用 Linux 終端機計算特定資料夾層級中的資料夾數量?

如何使用 Linux 終端機計算特定資料夾層級中的資料夾數量?

我的音樂庫中有一個非常具體的目錄樹。我想計算所有專輯,不包括所有子目錄。

例如,給定這個目錄樹:

/music/
/music/Davis, Miles/                           
/music/Davis, Miles/Kind of Blue/                
/music/Davis, Miles/Tutu/                    
/music/Hendrix, Jimi/                              
/music/Hendrix, Jimi/Axis Bold As Love/               
/music/Hendrix, Jimi/Electric Ladyland/              
/music/Hendrix, Jimi/Electric Ladyland/Disk 1   
/music/Hendrix, Jimi/Electric Ladyland/Disk 2

我希望命令返回 "4" 。

所以基本上我希望命令返回專輯的數量,或者,如果它返回“2”個解釋和“4”個專輯,則獎勵積分。

(如果還列出了解釋和專輯,則加倍獎勵積分。)

我怎樣才能最輕鬆地做到這一點?

答案1

看四張專輯:

$ ls -d1 music/*/*/
music/Davis, Miles/Kind of Blue/
music/Davis, Miles/Tutu/
music/Hendrix, Jimi/Axis Bold As Love/
music/Hendrix, Jimi/Electric Ladyland/

計算它們:

$ printf "%q\n" music/*/*/ | wc -l
4

這裡使用該%q格式是為了防止帶有換行符號的專輯名稱被多次計數。

觀看藝術家:

$ ls -d1 music/*/
music/Davis, Miles/
music/Hendrix, Jimi/

計算藝術家數量:

$ printf "%q\n" music/*/ | wc -l
2

上述命令假設位於music目前目錄中。如果該music目錄實際上是,則在上述所有命令的前面/music加上。否則,將到達的路徑放在前面。/musicmusic

答案2

您可以使用find列出所有子目錄。然後計算每行斜線的數量並報告出現 3 個斜線的頻率:

find -type d | sed s%[^/]%%g | grep -c ^///$

用於^//$取得解釋數。

答案3

我想你正在尋找一點「尋找」魔法。跑步

find /music -mindepth 2 -maxdepth 2 -type d | wc -l

應該會告訴你你收藏的專輯數量。跑步

find /music -mindepth 1 -maxdepth 1 -type d | wc -l

應該返回藝術家的數量。

相關內容