我如何快速(尽可能快)从一个非常大的目录中列出十个文件,任何文件?

我如何快速(尽可能快)从一个非常大的目录中列出十个文件,任何文件?

我有一个包含 50 万个文本文件的目录,我想用 vim 打开一个或多个来检查文本模式。如何快速打开相同的十个文件名作为样​​本?所有文件名都是未知的。

我试过了ls directory,但发现它太慢了,无法列出所有文件。请不要给我提供需要检查时间戳或其他类似随机或其他内容的答案。这里的重点是时间。尽可能快。

我从@the_velour_fog 那里得知,有一个使用 vim 的直接解决方案(:args `find . -type f \| head -n10`,如果有人不需要使用 nerdtree 等插件运行 vim,则强烈建议使用此方法),但请给我一个 Ubuntu 答案。

答案1

如果您主要关心的是时间,并且想要列出任意 10 个文件,那么您应该查看-U列出条目而不进行排序的选项。

因此你可以这样做:

ls -U

仅限 10 个文件,假设文件名中没有换行符或任何不寻常的字符

ls -U | head -10

更好的办法是仅通过 shell 本身来执行此操作:

printf '%s\n' *

对于 10 个文件:

printf '%s\n' * | head -10

下面是我的系统上 2000 个文件的计时统计信息zsh

( ls --color=auto foobar* | head -10; )  0.044 total
( ls --color=auto -U foobar* | head -10; )  0.020 total
( printf '%s\n' foobar* | head -10; )  0.013 total

还要注意,如果目录中有许多文件,其中一些可能会触发,ARG_MAX在这种情况下需要使用其他方式,如find或 shell 循环。

答案2

尝试cd进入目录并打开 vim,然后进入 vim 后,运行此 ex 命令

:args `find . -type f \| head -n10`

我的测试表明,vim 本身可以处理带有空格的文件

答案3

你可能已经移动定位安装在您的计算机上(如果没有,我建议您这样做,它对于搜索文件非常有用)

安装后(并通过第一次调用初始化更新数据库命令)你可以尝试类似以下操作:

locate /path/to/directory | head -n [qty of file wanted]

这应该和ls并为您提供n要求提供完整路径的文件

相关内容