Linuxコマンドでとにかくいろいろ探したい時のリンク集

# ファイルとかディレクトリとかの情報で探したい

```bash
# ファイル名かディレクトリ名で検索したい
$ find {ディレクトリパス} -name '{検索したい文字列}' 

# ファイル名で検索したい
$ find {ディレクトリパス} -type f -name '{検索したい文字列}' 
# ファイル名で検索したい(大文字小文字無視)
$ find {ディレクトリパス} -type f -iname '{検索したい文字列}' 

# ディレクトリ名で検索したい
$ find {ディレクトリパス} -type d -name '{検索したい文字列}' 

# ファイルの拡張子を指定して再帰的に検索したい
$ find ./ -name *.xhtml
$ grep '{検索したい文字列}' {ディレクトリパス} -r --include=*.php

# 特定の拡張子を除外して再帰的に検索したい
$ grep '{検索したい文字列}' {ディレクトリパス} -r --exclude=*.css
$ find {ディレクトリパス} -not -name *.css -a -name *{検索したい文字列}*

# ファイルのタイムスタンプで検索したい(例:今～10min前まで)
$ find -mmin -10
```

- [Man page of FIND](https://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html)
- [Linuxコマンド集 - 【 find 】 ファイルやディレクトリを検索する：ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230777/?rt=nocnt)
- [UNIX/Linuxの部屋 コマンド:find](http://x68000.q-e-d.net/~68user/unix/pickup?find)
- [◇ディレクトリとファイルの検索◇初心者のためのLinuxサーバー構築講座](http://www.obenri.com/_command/find01.html)
- [find コマンド | コマンドの使い方(Linux) | hydroculのメモ](https://hydrocul.github.io/wiki/commands/find.html)
- [逆引きUNIXコマンド/findコマンドの-printオプションについて - Linuxと過ごす](http://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/find%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE-print%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6#e345739d)
- [特定の拡張子(*.php)のファイルだけをGrepして検索したい。 - それマグで！](http://takuya-1st.hatenablog.jp/entry/20120411/1334166704)
- [Grep で特定の拡張子のファイルのみ対象・除外する - Corredor](http://neos21.hatenablog.com/entry/2017/04/24/080000)
- [逆引きUNIXコマンド/findに日時を指定し該当するファイルを検索する - Linuxと過ごす](https://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/find%E3%81%AB%E6%97%A5%E6%99%82%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E8%A9%B2%E5%BD%93%E3%81%99%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8B)

# ファイルの中身にある文字列で探したい
```bash
$ find {ディレクトリパス} -type f | xargs grep '{検索したい文字列}'

# ファイル名だけ表示
$ grep -rl '{検索したい文字列}' {ディレクトリパス}

# 行表示版
$ grep -rn '{検索したい文字列}' {ディレクトリパス}

# 前後指定行数表示版(前後4行表示)
$ grep -4 -rn '{検索したい文字列}' {ディレクトリパス}

# 大文字小文字無視(-i)してファイルパスだけ表示(-l)で検索したい
$ grep -irl '{検索したい文字列}' {ディレクトリパス}
# 指定した拡張子(--include)のファイルだけでバイナリファイルを除外(-I)してファイルパスだけ表示(-l)で検索したい
$ grep -Irl '{検索したい文字列}' --include=*.xhtml
# 任意の文字列を含まない(grep (GNU grep) 3.1)
$ grep -v {任意の文字列}

# 複数条件(AND) : (「;」で始まらない)and(「{{」を含む)
$ grep ^[^\;] | grep [\{\{]
# 複数条件(OR) : (「{{」を含む)or(「[」で始まる)
$ grep -e [\{\{] -e ^[\[]
# 複数条件(ANDとOR) : (「;」で始まらない)and((「{{」を含む)or(「[」で始まる))
$ grep ^[^\;] | grep -e [\{\{] -e ^[\[]

# 正規表現を使って探したい
grep -rE '{検索したい文字列を表す正規表現}' {ディレクトリパス}
```

- [複数のファイル内の文字列をまとめて置換するLinuxコマンド - Qiita](http://qiita.com/kkyouhei/items/b4ff839a2f36ba194df3)
- [Grep結果に行番号を表示する - それマグで！](http://takuya-1st.hatenablog.jp/entry/20100316/1268739433)
- [grepで該当する行の前後も一緒に表示するには](https://www.atmarkit.co.jp/flinux/rensai/linuxtips/137greplineplus.html)
- [文字コードの違いにより grep 出来ないファイルを grep する - Qiita](http://qiita.com/sutoh/items/72a6687ad1f67af1ba13)
- [FINDで特定文字列を含むファイルの一括検索 - Qiita](http://qiita.com/YNZ/items/7c98587391a5d5dbb6e3)
- [grepでAND検索とOR検索 - Qiita](https://qiita.com/ritukiii/items/968f17f9c308743e85a7)
- [正規表現がわからないから見たいリンク集 - Qiita](https://qiita.com/ponsuke0531/items/64f6a180a4b699336096)

## 探しにくい文字を探したい

```bash
# ドットを含む文字を検索したい(囲みはダブルクォーテーションでもOK)
$ grep -r '\.padding' --include=*.css

# 「-1」を探したい
$ grep -Irn '\-1' --include=*.java
```

- [grep で ハイフン(マイナス)始まりの文字列検索 - log.xinu.jp](https://log.xinu.jp/2010-11-29-1.html)

# 〇〇を除外して探したい
```bash
# 任意の文字列を含まないで探したい
$ grep -rv {任意の文字列} {ディレクトリパス}
# 「任意の文字列を含まない」かつ「任意の文字列を含む」で探したい
$ ls -la | grep -v {含まない文字列} | grep {含む文字列}
# バイナリファイルを除外して探したい
$ grep -Ir '{検索したい文字列}' {ディレクトリパス}
# 特定のディレクトリを除外して探したい
$ grep -ir {検索したい文字列} --exclude-dir={ディレクトリ名}
```

- [テキストファイルをgrepしたらBinary file (standard input) matchesとなった時の対応方法](https://qiita.com/ponsuke0531/items/55843716123c306ac8bf)
- [「バイナリファイルに一致しました」を除外する方法 - Linuxと過ごす](https://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/%E3%80%8C%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E4%B8%80%E8%87%B4%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%8D%E3%82%92%E9%99%A4%E5%A4%96%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
- [指定した文字列を含まない行を抽出するためのコマンド | ハックノート](https://hacknote.jp/archives/20860/)
- [Input/Output errors - Qiita](https://qiita.com/chovin/items/eac3878b82c68cca42b1)

# bashでさっき使ったコマンドを探したい

```bash
(Cntrol + R)
$ (reverse-i-search)`cd': cd {ディレクトリ}
```

- [コマンド履歴から検索 - Qiita](https://qiita.com/quwa/items/3a23c9dbe510e3e0f58e)

# xxで始まる文字を探したい

```bash
# ハイフン(-)で始まる文字
## 失敗例
$ grep -rn "-- " {ディレクトリパス}
grep: unknown option --
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
## 成功例
$ grep -rn "\-- " {ディレクトリパス}

#「 AS 」で始まる「大文字英数字」を探す
grep -r -P '(?<=\sAS\s)[A-Z0-9_]+' {ディレクトリパス}
```

- [grepで先読みとか戻り読みの正規表現 - 唯物是真 @Scaled_Wurm](http://sucrose.hatenablog.com/entry/2013/07/17/232651)
- [正規表現の先読み・後読みを極める！ - あらびき日記](https://abicky.net/2010/05/30/135112/)

# 他のことをやりたい
- [Linuxコマンドでやりたいことをやるためのリンク集 - Qiita](https://qiita.com/ponsuke0531/items/73895dcdbb5ddd7d3331)
- [Linuxコマンドを使ってファイルでやりたいことをやるためのリンク集 - Qiita](https://qiita.com/ponsuke0531/items/aabcc32142906cd9b570)