CentOSで、指定ディレクトリ以下の「ファイル内容」を全文置換

Linuxコマンドgrep

grep でリストアップ後、sedの -i オプションを使用して上書き置換

 状態:-  閲覧数:2,299  投稿日:2015-06-14  更新日:2018-03-29

考え方


1.置換対象のファイルを grep でリストアップ
2.sedの -i オプションを使用して上書き置換

構文


カレントディレクトリ以下の全ファイル内容を全文置換
grep -rl 置換前文字列 . | xargs sed -i 's/置換前文字列/置換後文字列/g'

具体例


カレントディレクトリ以下にある全ファイル内容の'e1blue.net'を'e1blue.co'へ全文置換
# grep -rl e1blue.net . | xargs sed -i 's/e1blue\.net/e1blue.co/g'


迷走履歴

 閲覧数:310 投稿日:2015-06-14 更新日:2018-03-30 

遭遇エラー


grep: オプションが違います

sed: オプションが違います -- '-'

xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option

sed: ☆☆.svgを読み込めません: そのようなファイルやディレクトリはありません
・ファイル名に日本語を付与していると、読込エラー?

具体例


カレントディレクトリ以下にある全ファイル内容の'e1blue.net'を'e1blue.co'へ全文置換

失敗
# grep -rl e1blue.net . | xargs sed -i 's/e1blue.net/e1blue.co/g'

成功
・「.」は任意の一文字にマッチする正規表現なので、「\」でエスケープ処理が必要(e1blue.net 内の . のみ)。
# grep -rl e1blue.net . | xargs sed -i 's/e1blue\.net/e1blue.co/g'


ファイル拡張子などで条件を絞って全置換するためには、「grep」ではなく「find」を使用


grepコマンド使用例



類似度ページランキング
順位 ページタイトル抜粋
1 CentOSで、指定ディレクトリ以下の「ディレクトリ名」の置換リネーム、「ファイル名」の置換リネーム、「ファイル内容」の全文置換 64
2 CentOSで「指定ディレクトリ下層に複数存在する指定ディレクトリ」内にある全ファイルを削除するシェルスクリプト 57
3 CentOS7 で設定ファイルのチェック後、Nginx起動 49
4 カレントディレクトリ配下の「指定拡張子ファイル」内に「指定文字列」が含まれているものを検索する 48
5 指定ディレクトリ内の「特定拡張子のファイル」のみ削除 / find の -delete オプションを使用 48
6 パスの最後のディレクトリ名・ファイル名を抽出 44
7 CentOS7再起動時に、/run 直下に作成したディレクトリを削除しないようにする 41
8 「CentOS7」で「cron」を新規設定する 40
9 「/」以下を、index.htmで表示 39
10 CentOSのyumリポジトリ 38
11 PHP5をインストールしているCentOSで、PHP7も使用したい 36
12 ファイル拡張子などで条件を絞って全置換するためには、「grep」ではなく「find」を使用 36
13 指定IPアドレス以外からのアクセスは、.htaccessでサイト内のメンテナンスページへ誘導 33
14 CentOS7 / Nginx / PHP / MySQL 各種設定ファイルの場所 33
15 Xdebugインストール / CentOS 6 33
16 Windows/コマンドで、ディレクトリ毎削除 33
17 「CentOS6」から「CentOS7」への移行 32
18 PHP実行ユーザ設定(デフォルト挙動) / CentOS7 / Nginx 32
19 Linuxのディレクトリ構成をWindowsと比較 32
20 PHP7.1 インストール失敗 / CentOS 6 31
2022/7/03 18:07 更新
週間人気ページランキング / 6-26 → 7-2
順位 ページタイトル抜粋 アクセス数
1 npm | Node.js(サーバサイドJavaScriptのフレームワーク) | さくらVPS0 264
2 cp | Linuxコマンド | さくらVPS0 134
3 bash | shell | さくらVPS0 113
4 host | Linuxコマンド | さくらVPS0 71
5 パイプ | | パイプ(Linuxコマンド) | さくらVPS0 65
6 history | Linuxコマンド | さくらVPS0 32
7 phpの設定ファイルをphp.ini から分離させても良いの? | さくらVPS0 25
8 RFC | HTTP(通信プロトコル) | さくらVPS0 21
9 ABRT により 問題が検出されました | CentOS 7 (CentOS) | さくらVPS0 15
10 Nginx設定。エラーログレベル | Nginx(Webサーバ) | さくらVPS0 14
10 さくらVPS0 14
11 「RLogin」で文字化けするようになった場合は、オプション設定 - フォント - 文字セット -「UTF-8」を選択します。  | RLogin(ターミナルエミュレータ) | さくらVPS0 13
11 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) | さくらVPS0 13
12 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) | さくらVPS0 11
12 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) | さくらVPS0 11
13 chmod | Linuxコマンド | さくらVPS0 9
13 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) | さくらVPS0 9
14 PHPのmb_send_mail関数でメール送信できない | メール処理システム | さくらVPS0 8
14 Nginx エラー対応。解決したが原因不明 | Nginx(Webサーバ) | さくらVPS0 8
15 5文字 / 英単語 | ドメイン取得候補英単語(ドメイン) | さくらVPS0 7
2022/7/3 1:01 更新