0

CentOSで下記コマンドを実行しました
・置換実行されたファイルもあるのですが、コマンド結果には表示されませんでした
・置換したファイルをコマンド結果に表示させる方法はありますか?

$ find . -type f -name '*.php' -exec sed -i 's/a\.php/b\.php/g' {} +

sed: 一時ファイル /xxxx/sedf2hZwQ を開くことができませんでした: 許可がありません sed: 一時ファイル /xxxx
を開くことができませんでした: 許可 がありません
re9
  • 6,698
  • 29
  • 124
  • 232
  • 1
    https://ja.stackoverflow.com/a/54991/4236 も踏まえて、「置換したファイル」の定義を明確にしてください。 – sayuri May 16 '19 at 00:31
  • 「置換を実行して該当箇所が置き換わった」ファイルの意味で質問しました – re9 May 16 '19 at 01:14

1 Answers1

3

sedコマンドでは-n -pオプションを指定しない限り、パターンにマッチまたは置換した/しないに関わらず、入力ファイルの中身をすべて表示(出力)します。

そして、grepコマンドのような「マッチしたファイル名を表示する/しない」オプションは無いので、質問のような「置換したファイルを結果に表示させたい」なら関連質問でsayuriさんが回答しているように、sedの前にgrepなどであらかじめ対象のファイルを絞り込む必要があると思います。

cubick
  • 20,987
  • 5
  • 25
  • 64
  • オプションは無いのですね。実行結果が表示されず検索してもこの件に言及しているページが見つからなかったので、私のやり方が何か悪いのかと思い質問しました。自分で処理する必要がある、ということが分かりました – re9 May 16 '19 at 01:16