Linux and UNIX fc and history command information
# history (show command history list) # fc -l (show command history list) # !40 or !grep
06/15: Linux > grep and xargs
【 ファイルから文字列を検索する 】:ITpro
例1: 現在のフォルダ以下にあるPHPファイルから、MyPrentClassを継承しているファイルを探し、さらにSmartyテンプレートの場所を探す。
$ grep -rHl "extends MyPrentClass" ./*.php | xargs grep -nH "\.tpl"
例2: 現在のフォルダ以下から、ディレクトリ名".svn"を除外して、MyTestClassを検索する。
$ find . -type d -name .svn -prune -o -name \*.php -print | xargs grep -nHi "class MyTestClass"
例3: 現在のフォルダ以下から、ディレクトリ名".svn"を除外して、phpを検索し、ファイル名に2008を含むファイルをZIPする。
$ tar -czvf test_gz_file.gz `find . -type d -name .svn -prune -o -name '*.php' -print | grep '2008'`
例4: ログフォルダから過去一日以内に修正されかつエラーを探す。
$ find /var/log/ -type f -mtime -1 -print | xargs grep -rn -P '(2009(/|-)05(/|-)11|11(/|-)May(/|-)2009)' -A 5 | grep -P '(ERR|SEVERE|WARN|Exception)' -A 3 | more
find ./ -name "*tar.gz" | xargs -n1 tar xzvf
例1: 現在のフォルダ以下にあるPHPファイルから、MyPrentClassを継承しているファイルを探し、さらにSmartyテンプレートの場所を探す。
$ grep -rHl "extends MyPrentClass" ./*.php | xargs grep -nH "\.tpl"
例2: 現在のフォルダ以下から、ディレクトリ名".svn"を除外して、MyTestClassを検索する。
$ find . -type d -name .svn -prune -o -name \*.php -print | xargs grep -nHi "class MyTestClass"
例3: 現在のフォルダ以下から、ディレクトリ名".svn"を除外して、phpを検索し、ファイル名に2008を含むファイルをZIPする。
$ tar -czvf test_gz_file.gz `find . -type d -name .svn -prune -o -name '*.php' -print | grep '2008'`
例4: ログフォルダから過去一日以内に修正されかつエラーを探す。
$ find /var/log/ -type f -mtime -1 -print | xargs grep -rn -P '(2009(/|-)05(/|-)11|11(/|-)May(/|-)2009)' -A 5 | grep -P '(ERR|SEVERE|WARN|Exception)' -A 3 | more
find ./ -name "*tar.gz" | xargs -n1 tar xzvf