cpでの正規表現の使用


11

これは簡単な質問です。現在のディレクトリにある「axis-2」で始まり「.jar」で終わるすべてのファイルをターゲットディレクトリにコピーしようとしています。たとえば、〜/ MyDirectoryだとしましょう。私の最初の考えはしようとすることでした

cp '^axis2.*jar$' ~/MyDirectory

しかし、これは機能していません。cpで正規表現を使用できるかどうかさえわかりません。また、しばらくの間正規表現を実際に使用していないため、構文が完全にオフになっている可能性があります。私が試してみると、cpは「そのようなファイルまたはディレクトリはありません」というエラーメッセージを出力します。誰もがこれに対処する方法について何か提案がありますか?ありがとう!

回答:


15

UNIXシェルは正規表現ではなく、グロブパターンを使用します。したがって、で始まりでaxis2終わるファイル名を照合する場合は.jar、次のようにします。

cp axis2*.jar /destination/directory

どうもありがとう!私は自分でそれを理解しましたが、グロブパターンについては知りませんでした。
Nick Van Hoogenstyn

7

GNU findとGNUがcp利用可能な場合は、次のコマンドのように正規表現を使用できます。

find . -maxdepth 1 -regextype posix-basic -regex '.*/axis2[^/]*jar$' \
       -exec cp -t ~/MyDirectory {} +

これは、globパターンもbash拡張globパターンもニーズに合わない場合に便利です。


0

私はrename(Robin BarkerとLarry Wallによる)perlスクリプトの正規表現構文が本当に好きです、例えば:

rename "s/OldFile/NewFile/" OldFile*

OldFile.cそしてOldFile.h名前に変更されているNewFile.cNewFile.h、それぞれ、

私は単にコピーコマンドでまったく同じものを望んでいました:

copy "s/OldFile/NewFile/" OldFile*

そのため、そのスクリプトを複製し、renameステートメントをを介してコピーするように変更しましたFile::Copy。出来上がり!perl-regex構文のコピーコマンド:jcward / vopy

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.