Ls

如何遞歸地列出(ls)文件夾/目錄的內容,但深度僅為一個文件夾/目錄?

  • March 7, 2019

如何遞歸地列出(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 上方)。

引用自:https://unix.stackexchange.com/questions/504953