我如何吐出一行递归路径的平面列表?
例如,我只想要一个文件的完整路径的平面列表:
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
ls -a1几乎满足了我的需要,但我不想要路径片段,我想要完整的路径。
在ls目录的末尾添加通配符将强制执行全路径。现在你有这个:
$ ls /home/dreftymac/
foo.txt
bar.txt
stackoverflow
stackoverflow/alpha.txt
stackoverflow/bravo.txt
stackoverflow/charlie.txt
你可以这样做:
$ ls /home/dreftymac/*
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow:
alpha.txt
bravo.txt
charlie.txt
不幸的是,这不会打印递归目录的完整路径,因此这可能不是您正在寻找的完整解决方案。
我看到了很多答案。这是我的,如果你在Mac上工作,我觉得很有用。
我相信您知道有一些“包”文件(。App, .rtfd, .workflow等等)。查看Finder的窗口,它们似乎是单个文件。但事实并非如此。$ ls或$ find将它们视为目录…所以,除非你需要列出它们的内容,这对我来说是可行的:
find . -not -name ".*" -not -name "." | egrep -v "\.rtfd/|\.app/|\.lpdf/|\.workflow/"
当然,这是工作目录,你可以添加其他包的扩展名(但后面总是有一个/)。或者任何其他扩展,如果不是bundle没有/。
相当有趣的”。Lpdf /"(多语言pdf)。它有正常的“。pdf”扩展名(!!)或在Finder中没有。这样你就可以得到(或者只计算1个文件)这个pdf,而不是一堆东西…