
我的音樂庫中有一個非常具體的目錄樹。我想計算所有專輯,不包括所有子目錄。
例如,給定這個目錄樹:
/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
加上。否則,將到達的路徑放在前面。/
music
music
答案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
應該返回藝術家的數量。