findのAND検索・OR検索 [ 論理演算子 ] NOT検索(特定のファイルを含まない)
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
ディスカッション
コメント一覧
まだ、コメントがありません