- ベストアンサー
findして名前を変えてコピー(redhatlinux)
初心者で2~3日前からシェルを作っています。 環境:redhatlinux5 AAAディレクトリにある*.txtを全て探して BBBディレクトリに*_mmdd.txtに 名前を変えてコピーしたいのですが どのように書いたらよいのかわかりません。 名前を変えずにそのままコピーは以下のように すればできたのですが・・・ find /AAA -name "*.txt" -exec cp {} /BBB\; そこから先がわからないのでよろしくおねがいします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
find /AAA -name "*.txt" -print | while read f do g=`echo "$f" | sed 's/\.txt$/_mmdd.txt/'` cp "$f" /BBB/"$g" done
その他の回答 (3)
- D-Matsu
- ベストアンサー率45% (1080/2394)
回答No.4
"mmdd"の部分は日付なんじゃないかと無駄にエスパーしてみます。 まぁdate辺りで拾えばいいとは思いますが。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
Linux だと言ってるんだから変数展開のときに置換すれば sed は不要なのではないかと>#2. 多分 cp "$f" /BBB/"${f/%.txt/_mmdd.txt}" でいいんじゃないかな.
質問者
お礼
ありがとうございました。 助かりました。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
「シェル」を作っているんですか? 「シェルスクリプト」じゃなく? という定番の突っ込みはさておき, シェル変数の IFS を適切に設定しつつ find, while, read を組み合わせればなんとでもなりそう. ファイル名に空白が入らないことが保証できるなら, IFS の設定も不要になります.
お礼
無事にできました。 ありがとうございました。