如何递归地列出(ls)文件夹/目录的内容但深度仅为一个文件夹/目录?

cha*_*win 0 ls

如何递归地列出(ls)文件夹/目录的内容但深度仅为一个文件夹/目录?

我有以下文件夹结构:

folderA:
  folderB1:
    folderC1:
      fileD1:
      fileD2:
    fileC2
    fileC3
  folderB2:
    folderC4:
      fileD3:
      fileD4:
    fileC5
    fileC6
Run Code Online (Sandbox Code Playgroud)

我在 的父文件夹中,folderA并想列出其中的所有内容及其子文件夹,但不列出子文件夹。所以我想看看:

folderB1/folderC1
folderB1/fileC2
folderB1/fileC3
folderB2/folderC2
folderB2/fileC4
folderB2/fileC5
Run Code Online (Sandbox Code Playgroud)

那可能吗?目前,我使用ls -R folderA它让我陷入了数百个我不感兴趣的子文件夹的兔子洞。我想在某个深度停下来。理想情况下,会有一个选项,例如depth 1列出 folderA 及其子文件夹的内容并停止。

我正在使用 macOS X High Sierra。

Jef*_*ler 5

您不想要递归列表,因为正如您所见,递归意味着“到最后”,而不是“到某个任意的停止点”。

要在 folderA 的父级中列出 folderA 下的两个级别,

(cd folderA && ls -d -- */*)
Run Code Online (Sandbox Code Playgroud)

它的关键是*/*通配符/glob;这要求 shell 生成所有直接子目录(带有*/),然后生成其所有条目(最终*)。

重要的是,我们要告诉ls扩展任何那些最终报名的,如果他们碰巧目录; 我们用-d旗帜来做到这一点。

最后一部分,为了获得您正在寻找的输出格式,我通过启动一个子shell解决了我们cd进入folderA的问题,以便进行列表。一旦ls退出,子shell退出,我们返回到我们当前的提示和目录(文件夹A上方)。