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

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

/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

不幸的是,这不会打印递归目录的完整路径,因此这可能不是您正在寻找的完整解决方案。

其他回答

我认为最好的方法是:

find -D tree /fullpath/to-dir/ 

(或者为了保存到TXT文件中)

find -D tree /fullpath/to-dir/ > file.txt

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

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

du

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

du | awk '{print $2}'

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

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

查找-type f | xargs ls -1

从当前位置的所有文件递归列表:

Ls -l $(查找。类型)