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

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

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


当前回答

realpath命令输出解析后的路径:

realpath *

为了包含点文件,将ls -a的输出管道到realpath:

ls -a | xargs realpath

递归列出子目录:

ls -aR | xargs realpath

如果文件名中有空格,man xargs建议使用-o选项来防止文件名被错误地处理,这与find -print0的输出效果最好,并且它开始看起来比其他答案复杂得多:

find -print0 |xargs -0 realpath

参见Unix和Linux的stackexchange问题如何列出一个目录中的所有文件与绝对路径。

其他回答

tar cf - $PWD|tar tvf -             

这是缓慢的,但递归地工作,并打印目录和文件。你可以用awk/grep管道它,如果你只是想要文件名,而不是所有其他的信息/目录:

tar cf - $PWD|tar tvf -|awk '{print $6}'|grep -v "/$"          

运行bash命令,格式如下:

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

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

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

Ls -ld $(找到。)

如果你想根据修改时间对输出进行排序:

Ls -ltd $(查找。)

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

du

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

du | awk '{print $2}'

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

du -a

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