列出目录层次结构,其中子目录之前包含文件

列出目录层次结构,其中子目录之前包含文件

我一直在尝试使用 或 来对输出进行排序treefind并且每次在树中较高的文件之前向下钻取到更深的目录时,最终都会得到相同的结果。我想做的是将感兴趣的目录存储在 lua 表中,并将该目录作为文件子表的键。

我在用着tree -fi -noreport {Foo,Baz}

Foo
Foo/Foo.Build.cs
Foo/Private
Foo/Private/Foos
Foo/Private/Foos/Bars
Foo/Private/Foos/Bars/BaseBar.cpp
Foo/Private/Foo.cpp
Foo/Private/FOOPCH.h
Baz
Baz/Baz.Build.cs

我希望结果看起来像:

Foo
Foo/Foo.Build.cs
Foo/Private
Foo/Private/Foo.cpp
Foo/Private/FOOPCH.h
Foo/Private/Foos
Foo/Private/Foos/Bars
Foo/Private/Foos/Bars/BaseBar.cpp
Baz
Baz/Baz.Build.cs

tree fi -noreport {Foo,Baz} | sort -t '/'不工作。我尝试使用来自的解决方案这个线程,即tree | awk '{print gsub("/","/"), $0}' | sort -n | cut -d' ' -f2-。如果我这样做,我就会失去目录和文件之间的关系。

如何对相同深度的文件进行排序,使其显示在目录之前?

答案1

首先显示目录名称,然后跳转并仅显示文件名:

find . ! -name . -type d -print -exec sh -c 'find "$1" -maxdepth 1 ! -type d' {} {} \;

相关内容