我有一个包含 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要求提供完整路径的文件