如何打开 或 目录中的所有且仅打开 n 个(例如 5)个最近修改的less
文件vim
?
我知道我可以用来ls -t
将输出从最新到最旧进行排序。所以我的直觉是使用,ls -t | head -5 | vim
但这不起作用,因为ls
vim 将输出视为原始文本而不是文件名。
我该如何做到这一点find
?我的问题find
是我总是习惯ls
浏览目录,所以知道如何使用它 - 但find
我从来没有用于此目的。
答案1
您确实希望 shell 选择这些文件名,以防任何文件名包含 中的字符$IFS
(通常是空格、制表符或换行符)。您可以通过要求 (GNU)find
实用程序查找文件并用 NULL 分隔它们的文件名,然后使用 (GNU)实用程序将这些文件名重新分隔回 less 或 vim 来解决此问题xargs
,但我认为使用可以的 shell 更简单本地生成文件名:
zsh -c 'vim *(om[1,5])'
这使用zsh
带有通配符的单个vim
命令进行调用,该通配符扩展到当前目录中最近修改的五个文件。这些文件名作为单独的参数安全地提供vim
——它们不会被进一步分割$IFS
。
更多示例请参见:查找最新文件,是否可以在命令行参数中引用最近修改的文件?, 和访问(按字母顺序排序)目录中的最新文件