vimを使用して現在のディレクトリとすべてのサブディレクトリのすべてのファイルを開く方法は?

vimを使用して現在のディレクトリとすべてのサブディレクトリのすべてのファイルを開く方法は?

これまで私が使った方法は、vim */**サブディレクトリのすべてのファイルを開くようですが、いいえ現在のディレクトリのファイルを選択し、そのディレクトリのすべてのファイルをvim *開きます。currentしかし、現在のディレクトリ内のすべてのファイルを開く方法そしてすべてのサブディレクトリ?

答え1

そしてzsh

vim ./**/*(.)

その他のシェル:

find . -name '.?*' -prune -o -type f -exec vim {} +

開くのみ可能(非表示)定期的なすべてのレベルのサブディレクトリにあるファイル(ディレクトリ、シンボリックリンク、パイプ、デバイス、ゲート、ソケットなどを除く)


vim ./**/*(D-.)

その他のシェル、GNU find:

find . -xtype f -exec vim {} +

隠しファイルを開き(隠しディレクトリを参照することもできます)、通常のファイルへのシンボリックリンクを開くこともできます。


そして:

vim ./***/*(D-.)

その他のシェル:

find -L . -type f -exec vim {} +

サブディレクトリを表示するときにシンボリックリンクに移動することもできます。


1つのレベルのサブディレクトリのみを希望する場合:

vim ./* ./*/*

./一部のファイル名-がまたはで始まる場合は、globの前にプレフィックスを付けることをお勧めします+

(もちろん、これらのファイルfindも見つけることができます。ファイルのリストが大きく、少なくともGNUの場合はzsh複数のインスタンスを実行できる場合は、名前に次のバイトシーケンスを含む隠しファイル/ディレクトリをスキップすることはできません。を構成しないでください)の有効な文字です。vimfind

答え2

バッシュからshopt -s extglob

for file in **/**; do [[ -f "$file" ]] && vim "$file"; done

によると参考にしてください。スティーブンのコメント、Bash 4.3以前は、そのディレクトリのすべてのシンボリックリンクに従いました。

関連情報