11

.c、、.Rまたはで終わるすべてのファイルを検索したいと思います.Rd。私は試した

find . -iname "*.[cR]" -print

.cまたはで終わるすべてのファイルを提供します.R.Rdさらにファイルを取得するにはどうすればよいですか? []1文字しか一致しないことはわかっていますが、.Rdファイルを提供するように調整できませんでした(|またはオプション-regexなどで作業しようとしました)。

4

2 に答える 2

18

どうぞ=)

find -name "*.c" -o -name "*.R" -o -name "*.Rd"

-o探しているのが 3 つの拡張タイプだけである場合は、正規表現を使用せず、代わりに ("or" のように) 演算子を使用して検索を構成することをお勧めします。

于 2012-12-08T17:07:43.373 に答える
8

の適切な使用法は次の-regexとおりです。

find -regex '.*\.\(R\|Rd\|c\)'

正規表現を使用する場合は、これらがファイル名だけでなくパス全体に適用されることに注意する必要があります。

   -regex pattern
          File  name  matches regular expression pattern.  This is a match
          on the whole path, not a search.  For example, to match  a  file
          named `./fubar3', you can use the regular expression `.*bar.' or
          `.*b.*3', but not `f.*r3'.  The regular  expressions  understood
          by  find  are by default Emacs Regular Expressions, but this can
          be changed with the -regextype option.

正規表現はおそらくここでは最良の選択ではないという sampson-chen の答えに同意します。

于 2012-12-08T17:18:41.597 に答える