我有一个像这样的文件结构
/foo/bar/
├── .foo.cfg
├── foo.cfg
├── foo.data
├── foo.py
├── .svn
│ ├── ...
│ ├── ...
│ └── ...
├── .
└── ..
我想将所有隐藏和非隐藏文件打开到vim中。我可以像这样手动完成
vi .foo.cfg foo.cfg foo.data foo.py
但是当有100多个文件时,这不起作用。我也试过以下但没有成功
#hidden files not loaded
vi *
#Includes folders and '.' and '..'
vi * .*
#loads files one at a time
for i in `ls -a` ; do vi $i; done;
#loads files one at a time
find . -name "*" -type f -maxdepth 1 -exec vi {} ";"
答案 0 :(得分:5)
以下内容应该有效:
find . -maxdepth 1 -type f -exec vi {} +
来自find
手册页:
-exec command {} +
-exec选项的这个变体在所选文件上运行指定的命令,但命令行是通过在末尾附加每个选定的文件名来构建的;命令的调用总数将远远少于匹配文件的数量。命令行的构建方式与xargs构建命令行的方式大致相同。命令中只允许一个“{}”实例。该命令在起始目录中执行。
答案 1 :(得分:3)
一个简单的解决方案是
vim $(find . -type f)
请注意,这将打开当前文件夹中的所有文件,对当前文件夹的文件夹中的文件执行相同操作。你也可以尝试
vim * .[^.]*
这不会打开.
或..
,因为它与模式不匹配。
答案 2 :(得分:0)
在vim内部,做
:args * .* **/{*,.*}
应该可以工作,就像例如。
:args `find . -maxdepth 1 -type f`
还有:argadd
,:argdel
,:argdo
,:rewind
,:next
等来处理您的文件。