Ls
如何遞歸地列出(ls)文件夾/目錄的內容,但深度僅為一個文件夾/目錄?
如何遞歸地列出(ls)文件夾/目錄的內容,但深度僅為一個文件夾/目錄?
我有以下文件夾結構:
folderA: folderB1: folderC1: fileD1: fileD2: fileC2 fileC3 folderB2: folderC4: fileD3: fileD4: fileC5 fileC6
我在父文件夾中,
folderA
並希望列出其中的所有內容及其子文件夾,但不列出子文件夾。所以我想看看:folderB1/folderC1 folderB1/fileC2 folderB1/fileC3 folderB2/folderC2 folderB2/fileC4 folderB2/fileC5
那可能嗎?目前,我使用
ls -R folderA
它讓我陷入了數百個我不感興趣的子文件夾的兔子洞。我想停在某個深度。理想情況下,會有一個選項,比如depth 1
列出文件夾 A 及其子文件夾的內容並停止。我正在開發 macOS X High Sierra。
那麼,您不想要遞歸列表,因為正如您所見,遞歸意味著“到最後”,而不是“到某個任意停止點”。
要在文件夾 A 的父級中列出文件夾 A 下的兩個級別,
(cd folderA && ls -d -- */*)
它的關鍵是
*/*
萬用字元/glob;它要求 shell 生成所有直接子目錄(帶有*/
),然後是它的所有條目(最後一個*
)。重要的是,如果它們恰好是目錄,我們必須告訴
ls
不要*擴展任何這些最終條目;*我們用-d
旗幟來做這件事。最後一部分,為了獲得您正在尋找的輸出格式,我通過啟動一個子shell來解決,我們
cd
進入文件夾A以便進行列表。退出ls
後,子shell 退出,我們返回目前提示符和目錄(文件夾A 上方)。