機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

find + xargs grep + fgrepでフォルダを再帰的に全文検索する

AD

プログラミング

これでできま…せんでした。できるにはできるのですが、出力が多すぎて見えない。

find /mnt/c/pg/autohotkey -type f | xargs grep "GetKeyState"

この全文検索スクリプトを使う機会があって、いざ使ってみたら…

find /mnt/c/pg/autohotkey -type f | xargs grep "GetKeyState"

grep: ショートカット.lnk: そのようなファイルやディレクトリはありません
grep: /mnt/f/__HDD_BACKUP__/usb_backup/ahk/ショートカット/autohotkey.aux.ahk: そのようなファイルやディレクトリはありません
grep: ショートカット.lnk: そのようなファイルやディレクトリはありません
grep: /mnt/f/__HDD_BACKUP__/usb_backup/ahk/ショートカット/Markdown.ahk: そのようなファイルやディレクトリはありません
grep: ショートカット.lnk: そのようなファイルやディレクトリはありません
grep: /mnt/f/__HDD_BACKUP__/usb_backup/ahk/ショートカット/music.ahk: そのようなファイルやディレクトリはありません
grep: ショートカット.lnk: そのようなファイルやディレクトリはありません
grep: /mnt/f/__HDD_BACKUP__/usb_backup/ahk/ショートカット/myautohotkey.ahk: そのようなファイルやディレクトリはありません
grep: ショートカット.lnk: そのようなファイルやディレクトリはありません
grep: /mnt/f/__HDD_BACKUP__/usb_backup/ahk/ショートカット/Perfect.ahk: そのようなファイルやディレクトリはありません
grep: ショートカット.lnk: そのようなファイルやディレクトリはありません

こんな感じで、うるさい。どこにあるのかわかったもんじゃない。

find /mnt/f/__HDD_BACKUP__/usb_backup/ahk -type f | xargs grep "GetKeyState" | grep "一致しました"

これだと、色がつくて見やすくはなるんだけど、出力は変わらない。

質問してみた。:もし出力にある文字列を含むなら、その出力をnullに渡して標準出力しないようにする。

fgrepなるものがあるらしい。一回だけ聞いたことある…

|& fgrep -v "含みたくない文字列"

grepでも、-vだと含まない場合になります。fgrepも同じなのでわかりやすいですね。fgrepがなんなのかよくわかってないですが。

ではやってみよう。

yuis@DESKTOP-UHU8FSH:/mnt/c/pg/zenkaku_henkan$ find /mnt/f/__HDD_BACKUP__/usb_backup/ahk -type f | xargs grep "GetKeyState" |& fgrep -v "そのようなファイルやディレクトリはありません"
バイナリファイル /mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkコンパイル/fn1-12.exe に一致しました
バイナリファイル /mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkコンパイル/lifehack.exe に一致しました
バイナリファイル /mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkコンパイル/Perfect.exe に一致しました
バイナリファイル /mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkコンパイル/クリック連打.exe に一致しました
バイナリファイル /mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkコンパイル/マウス操作.exe に一致しました
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/021/AutoScroll.ahk:         GetKeyState,state,LButton
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/021/AutoScroll.ahk:         GetKeyState,state,RButton
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/WheelScroll.ahk:    wpalam  :=GetKeyState("LButton")     | GetKeyState("RButton") <<1
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/WheelScroll.ahk:            | GetKeyState("Shift")   <<2 | GetKeyState("Ctrl")    <<3

ちゃんとほしい情報だけ出力されていますね。

ちなみに、経緯としては、前GetKeyStateを使ったスクリプトを書いて、それを参考にしたかったんだけど、見つからない…そこで全文検索しようか、という感じです。

でも、これだとまだ情報が多い。

exeファイルとかbinファイルとかも混じっちゃってるし。

自分が書いたものは、.ahkだけで、探しているファイルも確実にahkスクリプトなので、ここはもうひと工夫。

yuis@DESKTOP-UHU8FSH:/mnt/c/pg/zenkaku_henkan$ find /mnt/f/__HDD_BACKUP__/usb_backup/ahk -type f | xargs grep "GetKeyState" |& fgrep -v "そのようなファイルやディレクトリはありません" |& fgrep ".ahk"
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/021/AutoScroll.ahk:         GetKeyState,state,LButton
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/021/AutoScroll.ahk:         GetKeyState,state,RButton
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/WheelScroll.ahk:    wpalam  :=GetKeyState("LButton")     | GetKeyState("RButton") <<1
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/WheelScroll.ahk:            | GetKeyState("Shift")   <<2 | GetKeyState("Ctrl")    <<3
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/WheelScroll.ahk:            | GetKeyState("MButton") <<4 | GetKeyState("XButton1")<<5
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/ahkテンプレ/WheelScroll.ahk:            | GetKeyState("XButton2")<<6
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/2017_05_07_ahk/ahk/temp-auto.ahk:;    If GetKeyState("Shift","P")
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/ahkテンプレ/021/AutoScroll.ahk:            GetKeyState,state,LButton
/mnt/f/__HDD_BACKUP__/usb_backup/ahk/ahkテンプレ/021/AutoScroll.ahk:            GetKeyState,state,RButton

完璧。

SPONSOR

オンラインブートキャンプ全12コースの「ウケ放題」 AD

コメントを残す

Close Menu