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

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

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


当前回答

对你们这些未来的人来说,最简单的方法就是:

du

然而,这也显示了每个文件夹中所包含内容的大小 您可以使用awk只输出文件夹名称:

du | awk '{print $2}'

编辑-对不起对不起,我的错。我以为只要文件夹就行了。 我把这个放在这里,以防将来有人需要它……

其他回答

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

ls -lR /path/I/need

运行bash命令,格式如下:

find /path -type f -exec ls -l \{\} \;

同样地,要去掉-l细节,只返回绝对路径:

find /path -type f -exec ls \{\} \;

如果你真的想使用ls,那么使用awk格式化它的输出:

ls -R /path | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'

试试下面的简单方法:

find "$PWD"

我不知道完整的路径,但你可以用-R来递归。或者,如果您不倾向于ls,您可以只查找*。