アプリ版:「スタンプのみでお礼する」機能のリリースについて

linuxで正規表現を使ってファイルをコピーしようとしているのですが正規表現の記述が間違っているためコピーできません. どこが間違っているのかまったく分かりません. ご教示よろしくお願いします. (コピーしたいファイルの数が少ないですが正規表現の勉強のため質問させていただきました. )

========コピーしたいファイル群============
0126-ad-g2.dat
0126-d-g2.dat
==========================================

========実行したコマンド==================
cp [0-9]\{4\}-[a-z]\{1,2\}-g2\.dat ../g2/
==========================================

A 回答 (3件)

満腹で眠気いっぱいなので実にスマートじゃないけど


ls -1 | grep '[0-9]\{4\}-[a-z]\{1,2\}-g2\.dat' | sed 's/^/cp /' | sed 's/$/ ..\/g2/' | sh
としてみたらどうだろう?
    • good
    • 0
この回答へのお礼

眠いところ回答ありがとうございます.
教えていただいた通りにやりましたら. 無事コピーできました.

お礼日時:2010/01/28 14:32

意図されている正規表現は


 ^[0-9]{4}-[a-z]{1,2}-g2\.dat$
だと思いますが、シェル上では通常まんまファイル名扱いされます。
お好みのfindオプションにegrepなど正規表現に対応したコマンドと組み合わせて使いましょう。

find ./ -type f -maxdepth 1 | egrep "^[0-9]{4}-[a-z]{1,2}-g2\.dat$" | xargs cp --target-directory=../g2
    • good
    • 0
この回答へのお礼

xargsと言うコマンドは始めて知りました. 勉強になりました. 回答ありがとうございます.

お礼日時:2010/01/28 14:31

あなたの使っているシェルでは正規表現が使えるのですか?



私のbashではshoptでextglobをonにしてからなら
@([0-9])@([0-9])@([0-9])@([0-9])-@([a-z])?([a-z])-g2.dat
でマッチできるようですよ。

この回答への補足

情報不足ですみません.当方はubuntu(v9.10)でシェルはtcshです. ググって見たところtcshで正規表現を有効にする方法はないみたいですね. grepなどの正規表現が使えるコマンドを組み合わせて行おうと思います. 回答ありがとうございました.

補足日時:2010/01/28 14:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!