我一直在尝试使用 或 来对输出进行排序tree
,find
并且每次在树中较高的文件之前向下钻取到更深的目录时,最终都会得到相同的结果。我想做的是将感兴趣的目录存储在 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' {} {} \;