人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Emeditor・Emacs・viそれそれにおいて、
あるディレクトリから、
ある文字列が含まれているファイルおよび含まれていないファイルを
検索表示する方法を教えてください。

正規表現を使ってどうにかできそうな気がするのですが、分かりません。

●質問者: tetlis
●カテゴリ:コンピュータ インターネット
✍キーワード:Emacs EmEditor vi ディレクトリ ファイル
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● mass3
●23ポイント

EmacsしかわからないのでEmacsだけ。

/home/hoge/ が「あるディレクトリ」だとして。

(1) "foo"が含まれるファイルの一覧

M-x grep [Enter]

Run grep (like this): grep -n -e foo /home/hoge/* [Enter]

(2) "foo"が含まれないファイルの一覧

M-x grep [Enter]

Run grep (like this): grep -v -n -e foo /home/hoge/* [Enter]

M-xはメタキーを押しながら[x]キーを打鍵すること、

[Enter]は[Enter]キーを打鍵することを表現しています。

grepには他にもオプションが渡せますので柔軟に処理できます。

http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html


2 ● mass3
●23ポイント

ポイント不要です。勘違いしてました。ごめんなさい。

(2) "foo"が含まれないファイルの一覧は正しくないですね。

"foo"が含まれない行の一覧しか見られません。

(1)"foo"が含まれるファイルの一覧もファイルの一覧とは言いがたいですね。

http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

◎質問者からの返答

そうなんですか。

今にも試そうと思っていたところこの回答を開きました。

残念です。


3 ● nyamap
●22ポイント

エディタからということで少し異なるかもしれませんが


含まれるファイル

grep -l hogehoge DIR/*

含まれないファイル

grep -vl hogehoge DIR/*

grep -rv hoge DIR とすれば再帰的にディレクトリを検索。


emacsですとshellモードから。viならば!!grep ...とすれば結果が編集しているファイルに挿入されます。

単発のコマンドも(emacsなら)いけそうですが、Unixらしく組み合わせる方が便利かもです。grepだけ覚えておけば他のケースにも応用できますし。

URLはダミーです。

http://localhost/


4 ● kizz
●22ポイント

vim しかわからないので vim だけ。

vi とのことですが vim ですよね?


GNU grep があり、シェルで back-tick が使える (`...` という記述ができる) 環境ならば、コマンドモードで :argadd `grep -l foo ./*` が使えそうです。

カレントディレクトリ内の foo を含むファイルが全て引数リストに入りますから、:bn で (必要に応じて :bp や :ls なども使って) 順に編集できます。

逆に foo を含まない方は :argadd `grep -L foo ./*` で。


より詳しくは vim のヘルプの :argadd の項 (:h :argadd で見られます) あたりをどうぞ。


しかし、本当にファイルの一覧を表示したいのでしょうか。

通常「foo を含むファイルを検索したい」という場合、foo または foo の近辺を編集したいのではないかと勝手に想像するのですが。

(mass3 さんもそれを念頭において回答されているように思います)

もしそうであるなら、:vimgrep foo **/* が使えます。

こちらは、カレントディレクトリ以下のファイルで foo を含む行が全て検索され (て quickfix リストに入) るので、:cn で (必要に応じて :cp や :cl なども使って) 順に foo のある行を辿っていけます。

ちなみにこちらは GNU grep 不要ですが、vim が quickfix オプション付きでコンパイルされている必要があります。(普通されてます)


より詳しくは、ヘルプの :vimgrep の項 (:h :vimgrep) や quickfix の項 (:h quickfix) をどうぞ。


http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/index.html

vim のヘルプの日本語訳です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ