- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:linuxで正規表現を使ってファイルをコピーしようとしているのですが正)
Linuxで正規表現を使ったファイルのコピー方法について
このQ&Aのポイント
- Linuxで正規表現を使ってファイルをコピーしようとしているのですが正規表現の記述が間違っているためコピーできません。
- コピーしたいファイルの数が少ないですが正規表現の勉強のため質問させていただきました。
- ご教示よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
満腹で眠気いっぱいなので実にスマートじゃないけど ls -1 | grep '[0-9]\{4\}-[a-z]\{1,2\}-g2\.dat' | sed 's/^/cp /' | sed 's/$/ ..\/g2/' | sh としてみたらどうだろう?
その他の回答 (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
質問者
お礼
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 でマッチできるようですよ。
質問者
補足
情報不足ですみません.当方はubuntu(v9.10)でシェルはtcshです. ググって見たところtcshで正規表現を有効にする方法はないみたいですね. grepなどの正規表現が使えるコマンドを組み合わせて行おうと思います. 回答ありがとうございました.
お礼
眠いところ回答ありがとうございます. 教えていただいた通りにやりましたら. 無事コピーできました.