如何递归地列出(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。
您不想要递归列表,因为正如您所见,递归意味着“到最后”,而不是“到某个任意的停止点”。
要在 folderA 的父级中列出 folderA 下的两个级别,
(cd folderA && ls -d -- */*)
Run Code Online (Sandbox Code Playgroud)
它的关键是*/*
通配符/glob;这要求 shell 生成所有直接子目录(带有*/
),然后生成其所有条目(最终*
)。
重要的是,我们要告诉ls
给不扩展任何那些最终报名的,如果他们碰巧目录; 我们用-d
旗帜来做到这一点。
最后一部分,为了获得您正在寻找的输出格式,我通过启动一个子shell解决了我们cd
进入folderA的问题,以便进行列表。一旦ls
退出,子shell退出,我们返回到我们当前的提示和目录(文件夹A上方)。
归档时间: |
|
查看次数: |
488 次 |
最近记录: |