猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

Linux

findとxargsとgrep

投稿日:2013年2月8日 更新日:

ファイルやディテクトリを検索するfindコマンド。
標準入力からにコマンドを作成するxargs。
これらを利用して、findで見つけたファイルのなかからgrepで必用な行を抜き出せます。

find

find [path] [検索条件]
-name ファイルやディレクトリのマッチング条件
-user 所有者を指定
-group グループを子弟
-atime n n日前に最終アクセスがあったファイル
-mtime n n日前に最終更新されたファイル
-empty 空のファイルやディレクトリを検索する

# find ./ -name "*.log"
./sub1/sub1.log
./sub2/sub2.log
./sub3/sub3.log
./dir.log

※注意 マッチング条件は””で囲みます。
※pathを/とすると、ルート配下(全てを対象)となります。

xargs

xxx | xargs [実行するコマンド]

引数を何も指定しないとechoになります
# find ./ -name "*.log" | xargs
./sub1/sub1.log ./sub2/sub2.log ./sub3/sub3.log ./dir2.log ./dir.log

logファイルだけを削除します
# find ./ -name "*.log" | xargs rm

確認しながら削除したければ-iを付けます。
# find ./ -name "*.log" | xargs rm -i

grep

grep [検索文字列] [ファイル名]

grep "warn" /var/log/*.log

・大文字小文字を区別しない
# grep -i failed /var/log/messages

・一致した文字に色を付ける
grep -i --color error /var/log/messages

・検索文字をor条件で複数指定する
grep -i --color -e error -e fail /var/log/messages
grep -i --color "error\|times" /var/log/messages

find + xargs + grep

find,xargs,grepを組み合わせると、指定したディレクトリ配下のファイルを検索できます。
エラーのあったログを検索する、検索結果をさらに日付でソートするなど非常に応用ができます。
grepだけだとサブディテクトリまで検索できません。

503エラー(403バイト)の行を抜き出す
# find ./ -name "*.log" | xargs grep "503 403" 

さらに対象行の18文字目からの日付を抜き出しソートします。(18文字めからがからが日付だとする)
# find ./ -name "*.log" | xargs grep "503 403" | cut -c18- | sort

  -cx  : 5文字目のみ
  -cx-y : x~y文字目
  -c-x : 先頭からx文字
  -cx- : x文字目以降 

Gooleアドセンス用336

Gooleアドセンス用336

-Linux

執筆者:

関連記事

linux

tcpdumpでパケットキャプチャをする

パケットキャプチャといえばwire sharkでしょう。でも簡単にキャプチャしたい場合はいくらでもあるはずです。 linuxならtcpdumpがお勧めです。 INDEX1 基本的な使い方2 ソースホス …

WindowsのeclipseからLinuxのPHPをリモートデバッグする(2)WindowsのEclipseの設定

前回の WindowsのeclipseからLinuxのPHPをリモートデバッグする(1)Linuxにxdebuをインストールする で紹介したxdeugのインストールが前提となります。 ここでリモートデ …

linux

wgetでproxyを使用する

wgetの簡単な利用方法は以前紹介しました。 wgetの利用方法 今回はproxy経由でアクセスする方法です。 オプションでは指定できません。 /etc/wgetrcを編集する必要があります。 # v …

WindowsのeclipseからLinuxのPHPをリモートデバッグする(1)Linuxにxdebuをインストールする

Windowsを使用するのはグラフィカルで便利な開発環境があるためです。 そしてサーバーとしてのLinuxは秀逸です。 PHPもフリーで簡易ですし、Apache・MySQL・Linuxとの相性も最高で …

linux

fuserでファイルやソケットを使用しているプロセスを特定する

linuxでもプロセスを特定したい場合はあります。 fuseコマンドで確認できます。特にmaount関連は便利です。 オプション -a コマンドラインで渡されたすべてのファイルを表示する。 -k 指定 …