• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:linuxで正規表現を使ってファイルをコピーしようとしているのですが正)

Linuxで正規表現を使ったファイルのコピー方法について

このQ&Aのポイント
  • Linuxで正規表現を使ってファイルをコピーしようとしているのですが正規表現の記述が間違っているためコピーできません。
  • コピーしたいファイルの数が少ないですが正規表現の勉強のため質問させていただきました。
  • ご教示よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.3

満腹で眠気いっぱいなので実にスマートじゃないけど ls -1 | grep '[0-9]\{4\}-[a-z]\{1,2\}-g2\.dat' | sed 's/^/cp /' | sed 's/$/ ..\/g2/' | sh としてみたらどうだろう?

Falcon2
質問者

お礼

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

その他の回答 (2)

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.2

意図されている正規表現は  ^[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

Falcon2
質問者

お礼

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

  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

あなたの使っているシェルでは正規表現が使えるのですか? 私のbashではshoptでextglobをonにしてからなら @([0-9])@([0-9])@([0-9])@([0-9])-@([a-z])?([a-z])-g2.dat でマッチできるようですよ。

Falcon2
質問者

補足

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

関連するQ&A