我发现自己经常做的事情是运行一个 find 命令,然后在 vi 中编辑它们,它看起来像这样:
> find . "*.txt"
./file1.txt
./file2.txt
./path/to/file3.txt
> vi ./file1.txt ./file2.txt ./path/to/file3.txt
Run Code Online (Sandbox Code Playgroud)
有没有一种聪明而简单的方法可以在一个命令行中完成这一切?
Dev*_*lar 44
这应该可以解决问题:
find . -name "*.txt" -exec vim {} +
Run Code Online (Sandbox Code Playgroud)
使用 Vim,它对您的健康更好。:-)
使所有文件名(最多行长度限制)出现在一行中的经常被忽视的+选项-exec,即您仍然可以在一个 vim会话中打开所有文件(使用:n下一个和:N上一个文件导航)。
随着vim -p你的每一个文件的文件标签。检查:help tab-page-commands更多详细信息。
随着vim -o你会得到水平分割窗口的每一个文件,vim -O垂直分割窗口。检查:help window-move-cursor更多详细信息。
请注意,此答案的先前版本vim $(find . -name "*.txt")不适用于文件名中的空格,并且具有安全隐患。
管道进入xargs vi给出一个Warning: Input is not from a terminal, 再加上一个具有完全虚假行为的终端。用户 grawity 在下面的评论中解释了原因,并在这个问题中有更多的解释。