findのAND検索・OR検索 [ 論理演算子 ]

2016-11-29

findコマンドは、でAND検索複数条件での検索(OR検索)特定の条件などを除外(NOT検索)の方法を紹介します

動作確認用に以下のようなファイルを配置しています

  
$ ls |egrep "ex|hoge|test"
ex-auto.txt
ex-moter.txt
ex-race.txt
hoge-auto.txt
hoge-moter.txt
hoge-race.txt
test-auto.txt
test-moter.txt
test-race.txt

AND検索

findコマンドでAND条件で検索対象を絞り込んで検索します
ファイル名などの絞り込み条件を -and で追加していきます

書式:find 【ディレクトリ】 -name 【ファイル名】 -and -name 【ファイル名】
-andを省略もできます
書式:find 【ディレクトリ】 -name 【ファイル名】 -name 【ファイル名】

ファイル名に、【ex】,【race】のどちらの文字も含むファイルを検索


$ find . -name "ex*" -and -name "*race*"
./ex-race.txt
# -and を省略
$ find . -name "ex*" -name "*race*"
./ex-race.txt

OR検索

findコマンドで複数の条件でOR検索のように検索する方法は以下となります
ファイル名などの複数の条件でマッチしたい場合などは、-or(-o) で繋げて利用します

書式:find 【ディレクトリ】 -name 【ファイル名】 -or -name 【ファイル名】
-or は -o でもOKです
書式:find 【ディレクトリ】 -name 【ファイル名】 -o 【ファイル名】

ファイル名に、【auto】,【race】のどちらかの文字があるファイルを検索


$ find . -name "*auto*" -or -name "*race*"
./ex-race.txt
./hoge-race.txt
./test-race.txt
./hoge-auto.txt
./ex-auto.txt
./test-auto.txt
# -o を利用
$ find . -name "*auto*" -o -name "*race*"
./ex-race.txt
./hoge-race.txt
./test-race.txt
./hoge-auto.txt
./ex-auto.txt
./test-auto.txt

NOT検索

findコマンドで除外条件を指定して検索する方法は以下となります
ファイル名などの除外したい条件を、-not 【ファイル名】(! 【ファイル名】)指定して除外条件を設定します

書式:find 【ディレクトリ】 -name 【ファイル名】 -not -name 【ファイル名】
-or は -o でもOKです
書式:find 【ディレクトリ】 -name 【ファイル名】 -o 【ファイル名】

ファイル名に、【auto】,【race】を含まないファイルを検索


$ find . -name "*auto*" -not -name "*race*"
./hoge-auto.txt
./ex-auto.txt
./test-auto.txt
# !で指定
$ find . -name "*auto*" ! -name "*race*"
./hoge-auto.txt
./ex-auto.txt
./test-auto.txt

スポンサーリンク