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

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

/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 -R1 /path | 
  while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done

其他回答

Ls -ld $(找到。)

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

Ls -ltd $(查找。)

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

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

例子:

tree -fi > result.txt

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

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

我认为最好的方法是:

find -D tree /fullpath/to-dir/ 

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

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

ls -lR是你要找的,至少我是。干杯

如果将目录作为相对路径传递,则需要在调用find之前将其转换为绝对路径。在下面的例子中,目录作为第一个参数传递给脚本:

#!/bin/bash

# get absolute path
directory=`cd $1; pwd`
# print out list of files and directories
find "$directory"