findコマンドの "-or" オプションはカッコで括る
複数の検索条件を -or
オプションで繋げるとき、以下のように書きがち
$ find . -type f -name *.pdf -or -name *.txt -mtime -3
上記では、 カレントディレクトリの、ファイル名 .pdf か、ファイル名 .txt かつ 最後の修正日が3日前 と、「3日前」が後者の条件「*.txt」にしか掛からない。
-or
オプションで列記したい条件はカッコで括る。
$ find . -type f \( -name *.pdf -or -name *.txt \) -mtime -3
これは
$ find . -type f -name *.pdf -mtime -3 -or -name *.txt -mtime -3
と等価。
カッコにはバックスラッシュをつけること。
以下のようにエラーになる。
$ find . -type f ( -name *.pdf -or -name *.txt ) -mtime -3 -bash: 予期しないトークン `(' 周辺に構文エラーがあります