2012-12-08 9 views
9

.c.R、または.Rdで終わるすべてのファイルを検索したいと思います。私は.cまたは.Rで終わるすべてのファイルを与えるUnix find:ファイル* .Rと* Rdのマッチング方法?

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

を試してみました。さらに.Rdファイルを取得するにはどうすればよいですか?私は[]が一つだけの文字と一致していることを知っているが、私も.Rdファイルを提供するために、それを調整することができませんでした

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

)=ここで

答えて

15

あなたが行く(|またはオプション-regexなどと連携してみました)それはあなたが探しているだけで3つの拡張型なら、私は離れて正規表現から滞在し、だけではなく、あなたの検索を構成する-o(としての「または」)演算子を使用してお勧めします。

+0

このソリューションは、プラットフォーム依存するよう './ -name「* .EXE」'と '見つけるを見つける./ -name "* .dll" 'しかしfind ./ -name" * .exe "-o name" * .dll "'は動作しないようです。 – Dominique

7

-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の答えに同意します、正規表現はおそらくここでは最良の選択ではありません。私は私のWindows PC上でCygwinのUNIXエミュレータをインストールしているし、次のfindコマンドが動作しているように見える:

関連する問題