0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ファイル検索コマンド

Last updated at Posted at 2025-03-16

ファイル検索コマンドの備忘録

ファイル検索の際に利用するコマンドの備忘録です。

テストファイル

これらのテストファイルはカレントディレクトリに配置されているとします。

file1.txt
hogehoge fugafuga
hogehoge1   fugafuga1
hogehoge1fugafuga1
file2.txt
hogehoge fugafuga
hogehoge1   fugafuga2
hogehoge2-fugafuga2
hogehoge2(fugafuga2)
hogehoge123(fugafuga2)fuga

findコマンド

基本形

$ find 場所 -name (ファイル名)
※ 「.」 はカレントディレクトリを示す

(1) 基本形
$ find . -name "file*"
./file2.txt
./file1.txt

(2) nameオプション省略
$ find file*
file1.txt
file2.txt
$

(3) ワイルドカード無しなら完全一致を探すため1ファイルも抽出されない
$ find . -name "file"
$ 

【参考】エラーが発生する書き方

(1) ワイルドカードなし
$ find file
find: file: No such file or directory

(2) 対象文字列を引用符で囲う
$ find "file*"
find: file*: No such file or directory

(3) ワイルドカードなし かつ 引用符あり
$ find "file"
find: file: No such file or directory

grepコマンド

基本形

$ grep [オプション] 文字列 ファイル名
※検索文字列はワイルドカードを利用せずに、この文字列を含む行を検索する。

(1) 対象文字列を含むファイル内の行を全て表示する
$ grep "hogehoge" file1.txt
hogehoge fugafuga
hogehoge1   fugafuga1
hogehoge1fugafuga1

(2) 対象文字列を含まない行は表示されない
$ grep "hogehoge1" file1.txt
hogehoge1   fugafuga1
hogehoge1fugafuga1

(3) 対象文字列は引用符で囲んでも同様の出力
$ grep hogehoge1 file1.txt
hogehoge1   fugafuga1
hogehoge1fugafuga1

iオプション

大文字と小文字を区別せずに検索を行う

(1) iオプションなし
$ grep HOGEHOGE1 file1.txt
$ 

(2) iオプションあり
$ grep -i HOGEHOGE1 file1.txt
hogehoge1   fugafuga1
hogehoge1fugafuga1

eオプション

grep検索に正規表現を用いる
「.」任意の1文字
「*」0文字以上の繰り返し

$ grep -e ".*(.*).*" file2.txt
hogehoge2(fugafuga2)
hogehoge123(fugafuga2)fuga

【参考】エラーが発生する書き方

正規表現の文字列パターンを引用符で囲まない

$ grep -e .*(.*).* file2.txt
zsh: no matches found: .*(.*).*

find | grep

findとgrepをパイプライン(|)で繋いで、特定のファイル名を持つファイルの中から特定の文字列を検索する (他にも実現方法はあるため一例)

※xargsコマンドは標準入力(stdin)から受け取ったデータを別のコマンドに渡す

(1) 基本形
$ find file* | xargs grep hoge
file1.txt:hogehoge fugafuga
file1.txt:hogehoge1   fugafuga1
file1.txt:hogehoge1fugafuga1
file2.txt:hogehoge fugafuga
file2.txt:hogehoge1   fugafuga2
file2.txt:hogehoge2-fugafuga2
file2.txt:hogehoge2(fugafuga2)
file2.txt:hogehoge123(fugafuga2)fuga

(2) grepのeオプションあり
$ find file* | xargs grep -e ".*(.*).*"
file2.txt:hogehoge2(fugafuga2)
file2.txt:hogehoge123(fugafuga2)fuga

(3) 特定ディレクトリの全ファイルを検索対象にするならfindの代わりにlsでもOK
$ ls | xargs grep -e ".*(.*).*"
file2.txt:hogehoge2(fugafuga2)
file2.txt:hogehoge123(fugafuga2)fuga
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?