Linux
如何只查找沒有子目錄的目錄?
linux 中有沒有辦法只查看目錄樹中那些是分支末端的目錄(我在這裡稱它們為葉子),即其中沒有子目錄的目錄?我看了這個問題,但從未正確回答。
所以如果我有一個目錄樹
root/ ├── branch1 │ ├── branch11 │ │ └── branch111 * │ └── branch12 * └── branch2 ├── branch21 * └── branch22 └── branch221 *
我可以只找到其分支末尾的目錄(標有
*
的目錄),所以只查看目錄數量,而不是文件數量?在我的真實案例中,我正在尋找帶有文件的文件,但它們是我想在這個例子中找到的“葉子”的一個子集。
要僅查找包含文件的葉目錄,您可以結合參考問題https://unix.stackexchange.com/a/203991/330217>或類似問題<https://stackoverflow.com/a/4269862/10622916>的答案或<https://serverfault.com/a/530328與
find
_! -empty
find rootdir -type d -links 2 ! -empty
檢查硬連結
-links 2
應該適用於傳統的 UNIX 文件系統。該-empty
條件不是 POSIX 標準的一部分,但應該在大多數 Linux 系統上都可用。根據 KamilMaciorowski 的評論,目錄的傳統連結計數語義對 Btrfs 無效。這在https://linux-btrfs.vger.kernel.narkive.com/oAoDX89D/btrfs-st-nlink-for-directories中得到證實,其中還提到 Mac OS HFS+ 作為傳統行為的一個例外。對於這些文件系統,需要使用不同的方法來檢查葉目錄。