我如何吐出一行递归路径的平面列表?

例如,我只想要一个文件的完整路径的平面列表:

/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几乎满足了我的需要,但我不想要路径片段,我想要完整的路径。


当前回答

如果你需要搜索100gb或更大的内存。 我建议使用@kerkael发布的命令树,而不是find或ls。

然后执行命令树,惟一不同的是,我建议将输出写入文件。

例子:

tree -fi > result.txt

之后,在文件中使用grep -i "*.docx" result.txt这样的模式执行grep命令,这样就不会丢失时间,而且这种方法在大内存中搜索文件更快。

我在270GB内存上执行这些命令,我得到了一个文件txt,占用了100MB。 啊,命令树花费的时间是14分钟。

其他回答

du -a

方便一些有限的设备外壳的查找/定位不可用。

我看到了很多答案。这是我的,如果你在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,而不是一堆东西…

不要把事情搞复杂。我只是使用这个,得到了一个漂亮的输出:

ls -lR /path/I/need

一长串的答案。 这很有帮助,最后,我创建了我自己的,我正在寻找:

列出目录及其子目录下的所有文件。

find "$PWD" -type f

列出目录及其子目录下的所有目录。

find "$PWD" -type d

列出目录及其子目录下的所有目录和文件。

find "$PWD"

拥有使用所有可能的ls选项的自由:

查找-type f | xargs ls -1