到目前为止,我一直在使用vim */**
which 似乎打开子目录中的所有文件而不是当前目录中的文件,并且vim *
它打开目录中的所有文件current
。但是如何打开当前目录和所有子目录中的所有文件?
与zsh
:
vim ./**/*(.)
Run Code Online (Sandbox Code Playgroud)
其他贝壳:
find . -name '.?*' -prune -o -type f -exec vim {} +
Run Code Online (Sandbox Code Playgroud)
仅打开任何级别子目录中的(非隐藏)常规文件(不是目录、符号链接、管道、设备、门、套接字...)。
vim ./**/*(D-.)
Run Code Online (Sandbox Code Playgroud)
其他外壳,GNU find
:
find . -xtype f -exec vim {} +
Run Code Online (Sandbox Code Playgroud)
还可以打开隐藏文件(并遍历隐藏目录)和指向常规文件的符号链接。
和:
vim ./***/*(D-.)
Run Code Online (Sandbox Code Playgroud)
其他贝壳:
find -L . -type f -exec vim {} +
Run Code Online (Sandbox Code Playgroud)
在查看子目录时也遍历符号链接。
如果您只想要一级子目录:
vim ./* ./*/*
Run Code Online (Sandbox Code Playgroud)
请注意,./
如果某些文件名以-
或开头,则在glob 前加上前缀是一个好习惯+
。
(当然,它们find
也适用于zsh
. 请注意,vim
如果文件列表很大,它们可能会运行多个实例,至少在 GNU 中find
,将无法跳过名称包含未形成的字节序列的隐藏文件/目录您的语言环境中的有效字符)。