人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

sed や xargs などを駆使し、apps/templates/foo.tpl, apps/actions/foo.php, apps/actions/config/foo.yml など各ディレクトリの foo.* を、 apps/templates/bar.tpl, apps/actions/bar.php, apps/actions/config/bar.yml のように bar.* に一括で置換したいです。どのようなコマンドを記述したらよいでしょうか?

当方の環境は Mac OS X Leopard です。

●質問者: 海老原昂輔
●カテゴリ:コンピュータ
✍キーワード:BAR config Leopard Mac OS X PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●35ポイント

こんなんでどうでしょうか?

find -type f -name foo.* | while read f; do mv "$f" "${f%/*}/bar${f##*/foo}"; done
  1. foo.で始まるファイルをfindで探す
  2. while read f で変数 f にファイル名が入る
  3. 適当に mv する
    • ${f%/*} は変数 f の後ろから /* にマッチする最小部分を削除する(ファイル名を削除してディレクトリ部分を残す)
    • ${f##*/foo} は変数 f の前から */foo にマッチする最大部分を削除する(ディレクトリ部分+/fooまでを削除してfooより後ろのファイル名部分を残す)

bashの変数展開色々については以下などを参照して納得してください

http://www.kawaz.jp/pukiwiki/?bash#v46ef504


2 ● poch-7003
●35ポイント

renameコマンドがあればこんな感じでしょうか.

find apps/ -type f -name foo.* |xargs rename foo. bar.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ