Bash 如何在包含400k文件的目录上运行“ls”命令以查找绝对路径

Bash 如何在包含400k文件的目录上运行“ls”命令以查找绝对路径,bash,shell,unix,sh,Bash,Shell,Unix,Sh,当我尝试运行此脚本时,此脚本超时。使用find而不是ls来避免排序延迟: ls -d "$PWD"/* > a.txt 更好的方法是,将输出格式更改为NUL分隔,这样即使文件的名称令人惊讶,如果您想创建其中一个文件来播放,您的输出也将是明确的 find "$PWD" -depth 1 -print >files.txt 您是否需要像ls默认那样对文件名进行排序?顺便说一句,请注意。如果您以编程方式使用这些名称,NUL分隔列表将比您的命令在此处创建的换行分隔列表更健壮。@sehaf

当我尝试运行此脚本时,此脚本超时。

使用find而不是ls来避免排序延迟:

ls -d "$PWD"/* > a.txt
更好的方法是,将输出格式更改为NUL分隔,这样即使文件的名称令人惊讶,如果您想创建其中一个文件来播放,您的输出也将是明确的

find "$PWD" -depth 1 -print >files.txt

您是否需要像ls默认那样对文件名进行排序?顺便说一句,请注意。如果您以编程方式使用这些名称,NUL分隔列表将比您的命令在此处创建的换行分隔列表更健壮。@sehafoc,…我假设OP是通过SSH连接或类似连接运行的。虽然如果他们禁用了排序,ls会在开始运行时立即发出输出。@CharlesDuffy,我猜是python子shell,因此标记为haha,但是如果没有更多,很难回答details@hyde,公平地说,由于ls是一个外部命令,我们几乎肯定会从这个命令中得到一个超过法定长度限制的命令行——shell可以扩展这个glob,但它不能将它放到外部命令行并成功地调用execv。有趣的是,OP报告的是超时,而不是错误。
find "$PWD" -depth 1 -print0 >files.nsv