2013/07/23

grep 指定ディレクトリ内のファイルの中に入っている単語の検索

追記あり

grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ

option

-i 大文字・小文字の区別をなくす。
-r サブディレクトリ以下も再帰的に検索する。
-n パターンに一致した行のファイル内での行番号を表示する。
-e 検索条件を指定 -e "内容" のセットで使う。

その他option
-w 指定したパターンを単語として含む行を抜き出す。
-c マッチした総行数を表示
--include='*.拡張子' 指定した拡張子を含む
--exclude='*.拡張子' 指定した拡張子を除く


応用編
find | xargs grep -n [pattern]
 
入力したパターンをカレントディレクトリ以下で検索してくれる。
最初の 
grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ
ほぼ同じ。


今更だけど、option -e "" を忘れて
余計な時間が掛かったので、残す。 

2013/07/05

findコマンド 3日前のファイルを舐めて消して、バックアップを取る

シェルスクリプトを作成

#!/bin/sh
#バックアップ シェルスクリプト
#バックアップフォルダ名は、YYYY-MM-DD-HHMMとする。
#例) 2012-01-01-0100
#crontabと連携し、日数を指定する
#2日分持つ
#ほんとはコピーとデリートのシェルスクリプトを分けた方がいい。


echo "File backup start at `date`"
days=2
 

# ○日前以前にアクセスされたファイルを消す。
echo "Old backup ($days days passed) delete"
find [targetFile] -atime +$days -print -exec rm -fR {} \;

# find [検索するディレクトリ] (option) 
# -atime (+/-)n 最後にアクセスされたのが
#  n日前のファイル・ディレクトリを検索(+n:n日以上、-n:n日以下)
# 今回は -mtime +$days としているので 設定日数変更可能。
# -print     検索結果の標準出力
# -fprint [file name]     検索結果を指定したファイルに書き出す
# -exec [command] {} \;     検索結果をコマンドに引き渡して実行


#ディレクトリレベルで個別設定し新規作成が必要な場合使用
#fdir="作成するディレクトリのフルパス"
#if [ ! -e $fdir ]
#then
#    echo "create backup directory $fdir"
#    mkdir $fdir
#fi

#任意のディレクトリに 2012-01-01-0100 のディレクトリを作成する。
dName=[バックアップ先のディレクトリフルパス]`date '+%Y-%m-%d-%H%M'`

echo "Copying to the BackupFile"
#バックアップ元のディレクトリを指定
#個別で指定する場合は、複数行記述する。

cp -R [バックアップ元ディレクトリフルパス] $dName

echo "DB backup end   at `date`"