findのAND検索・OR検索 [ 論理演算子 ] NOT検索(特定のファイルを含まない)

2021-12-20

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

スポンサーリンク

0
0

LinuxCentOS 6,CentOS 7,CentOS 8

Posted by admin