フォルダ内のサブディレクトリないに存在するテキストファイルも含め、複数テキストファイルの文字列を一括で置き換えたい。

そういうのを実現するプログラムを教えてください。
OSは MacOSX(10.4) か emacs(22) を使用しているので、それで動くものをご紹介ください。
この方法、いつも忘れてイライラしながら検索する。
今回だけは皆さんが検索してください!

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/07/11 22:55:45
  • 終了:2006/07/16 10:39:21

ベストアンサー

id:n_koji72 No.2

n_koji72回答回数53ベストアンサー獲得回数12006/07/12 09:34:43

ポイント20pt

http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html

http://x68000.q-e-d.net/~68user/unix/pickup?sed

bashのスクリプト+sedで


ターミナルを起動し

トップディレクトリで以下のコマンドを順に入力

(行頭の$や>はプロンプトなので入力しない)


$ for i in $(find ./* -print)

> do

> cp $i ${i}_tmp

> cat ${i}_tmp | sed 's/置換前文字列/置換後文字列/g' > $i

> rm ${i}_tmp

> done

失敗が怖い場合はrmの行を入力しなければ

置換前の内容が(ファイル名)_tmpというファイルに残っています。

テストしてから使ってください。

繰り返し使うのでしたらこの内容のスクリプトを用意し

改良して使うと良いでしょう。

id:KotoriKoToriko

うへー、思ったより実現はめんどくさそうですね。

なんかこの作業をするたびに sed を使ったりするんですが、またしばらく使わなくなって、忘れるみたいな繰り返しなんですよね。

2006/07/12 10:36:54

その他の回答(2件)

id:yoneto164 No.1

ヨネちゃん回答回数813ベストアンサー獲得回数942006/07/11 23:27:25

ポイント20pt

Macromedia Dreamweaver MX にはその機能が備わっています。ので、いつもDreamweaverを使って置換しています。

現在のバージョンでもおそらく可能であると思われます。

http://livedocs.macromedia.com/fireworks/8_jp/fwhelp/wwhelp/wwhi...

id:KotoriKoToriko

すみません、今すぐなんとかしたいので、フリーソフトでお願いします。

僕の言葉足らずです、ごめんなさい。

2006/07/11 23:32:31
id:n_koji72 No.2

n_koji72回答回数53ベストアンサー獲得回数12006/07/12 09:34:43ここでベストアンサー

ポイント20pt

http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html

http://x68000.q-e-d.net/~68user/unix/pickup?sed

bashのスクリプト+sedで


ターミナルを起動し

トップディレクトリで以下のコマンドを順に入力

(行頭の$や>はプロンプトなので入力しない)


$ for i in $(find ./* -print)

> do

> cp $i ${i}_tmp

> cat ${i}_tmp | sed 's/置換前文字列/置換後文字列/g' > $i

> rm ${i}_tmp

> done

失敗が怖い場合はrmの行を入力しなければ

置換前の内容が(ファイル名)_tmpというファイルに残っています。

テストしてから使ってください。

繰り返し使うのでしたらこの内容のスクリプトを用意し

改良して使うと良いでしょう。

id:KotoriKoToriko

うへー、思ったより実現はめんどくさそうですね。

なんかこの作業をするたびに sed を使ったりするんですが、またしばらく使わなくなって、忘れるみたいな繰り返しなんですよね。

2006/07/12 10:36:54
id:n_koji72 No.3

n_koji72回答回数53ベストアンサー獲得回数12006/07/12 09:43:19

ポイント40pt

http://www.sixnine.net/roadside/find.html

すみません。

先程の回答を一部修正します。

一行目を


$ for i in $(find . -type f -print)


にして下さい。これをしないと

サブディレクトリもcpとcatの対象になり,rmでは消せないので,

エラーメッセージが出てゴミが残ります。

id:KotoriKoToriko

上とあわせてお答えありがとうございます。

複数業にわたる置き換えやらなんかも、何も考えずに出来たらなーとか思ったりします。

しかしあれですね、 xyzzy だと楽なのにな。

「xyzzy」と「あふ」はたまに使いたくなります。

2006/07/12 10:41:36

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません