2016-04-27 8 views
1

Bashでは、コピーするファイルを正規表現で格納するために配列を使用しています。正規表現を使用した検索でのファイルのフィルタリング

regex_2=(*.awk *.sh *utf8.txt *new.txt) 
cp "${regex_2[@]}" $root_dest_dir_2 

しかし、私はこのように終わるものを除外したい.SH拡張子を持つファイルから:

*2016025a.sh *2015039.sh *20150810b.sh 

ので、除外する文字が先行.SHで終わるものと、複数の番号を、このようなまたは複数の数字が前に付いた.shで終わります。

ディレクトリには、これらのようなファイルが含まれています。

dev_execute_fromFTP5.sh --> to copy 
dev_execute_fromFTP5_2016025a.sh -- to exclude 
extrac.sh --> to copy 
execute_fromFTP5NT.sh --> to copy 
execute_fromFTP5NT_20150226.sh --> to exclude 
test5.sh --> to copy 
..... 
+1

使用して見つけるヌーを使用することができます。コピーしたいファイルとコピーしたくないファイルの違いは何ですか? – 123

+0

配列初期化で引用符で囲まれていないグロブパターンは、パターンを先に展開します。 – anubhava

+0

@anubhava私に例を挙げてもらえますか?私は引用符で囲まれていないグロブパターンについてはあまり知らない。 – Firefly

答えて

1

あなたが代わりを見つける正規表現

find . -regextype egrep \ 
     -regex ".*\.(awk|sh|utf8\.txt|new.txt)" \ 
     ! -regex ".*([0-9][[:alnum:]]).sh" \ 
     -exec cp {} $root_dest_dir_2 + 
関連する問題