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

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

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


当前回答

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

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

find "$PWD" -type f

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

find "$PWD" -type d

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

find "$PWD"

其他回答

试试下面的简单方法:

find "$PWD"

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

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

例子:

tree -fi > result.txt

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

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

使用找到:

find .
find /home/dreftymac

如果你只想要文件(忽略目录,设备等):

find . -type f
find /home/dreftymac -type f

最好的命令是tree -fi

打印每个文件的完整路径前缀 -i不打印缩进

e.g.

$ tree -fi
.
./README.md
./node_modules
./package.json
./src
./src/datasources
./src/datasources/bookmarks.js
./src/example.json
./src/index.js
./src/resolvers.js
./src/schema.js

为了使用文件而不是链接,你必须从输出中删除>:

tree -fi |grep -v \>

如果你想知道每个文件的性质,(例如只读取ASCII文件)尝试while循环:

tree -fi |
grep -v \> |
while read -r first ; do 
    file "${first}"
done |
grep ASCII
tar cf - $PWD|tar tvf -             

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

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