cpで正規表現を使用する

cpで正規表現を使用する

これは簡単な質問です。現在のディレクトリから.で​​始まりaxis-2、終わるすべてのファイルを.jarターゲットディレクトリにコピーしようとしています~/MyDirectory

私の最初の試みは

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

...しかし、これを試みると、cp「ファイルやディレクトリがありません」というエラーメッセージが表示されます。で正規表現を使用できるかどうかはわかりませんcp。また、しばらく正規表現を使用しておらず、構文に問題がある可能性があります。

この問題を解決する方法について提案がある人はいますか?

答え1

Linux/UNIX システムでのシェルの使用法グローバルモード、正規表現ではありません。したがって、axis2で始まり終わるファイル名を一致させるには、次のように.jarします。

cp axis2*.jar /destination/directory

答え2

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

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

これは、globモードまたはbash拡張globモードがユーザーの要件を満たしていない場合に便利です。

答え3

rename私はPerlスクリプト(Robin BarkerとLarry Wallを書く)の正規表現構文が大好きです。たとえば、次のようになります。

rename "s/OldFile/NewFile/" OldFile*

OldFile.cそれぞれとOldFile.hに名前が変更されました。NewFile.cNewFile.h

コピーコマンドを使用して同じ結果を得たいと思います。

copy "s/OldFile/NewFile/" OldFile*

だから私はスクリプトをコピーし、renameステートメントをcopy viaに変更しましたFile::Copy。お待ちください! Perl-regex構文を使用したコマンドのコピー:提示ワード/コピー

答え4

というコマンドfd(時には名前が付けられています)があります。fdfindfind

私たちはfd次のことができます。

fd regexp             ... to get files matching regexp
... -x command        ... to execute `command` on the files

だから私は以下を提案します。

fd '^axis2.*jar$'  -x cp -t ~/MyDirectory

関連情報