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

Linuxコマンドgrep

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

 状態:-  閲覧数:1,960  投稿日: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'


迷走履歴

 閲覧数:232 投稿日: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 ファイル拡張子などで条件を絞って全置換するためには、「grep」ではなく「find」を使用 36
12 PHP5をインストールしているCentOSで、PHP7も使用したい 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
2021/9/25 9:54 更新
週間人気ページランキング / 9-18 → 9-24
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 17
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 14
3 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 12
4 PHPのmb_send_mail関数でメール送信できない | メール処理システム 10
5 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) 9
6 さくらVPS0 8
6 tar: これは tar アーカイブではないようです 8
7 manページ日本語表示 | CentOS 7 (CentOS) 7
7 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 7
8 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
8 PHPファイルでchmodエラー | PHP(プログラミング言語) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
8 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 6
9 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 5
9 echo と cat の違い 5
10 phpMyAdmin 4.4.3(phpMyAdmin) カテゴリー 4
10 6回目-10.Nginxでバーチャルホスト設定確認 | CentOS 7 2週間無料のお試し期間 6回目(さくらVPS) 4
10 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? | CentOS 7 2週間無料のお試し期間 Link(さくらVPS) 4
10 cronで定期実行しているphpファイルを、コマンドライン経由で即時実行する | cron(Linuxコマンド) 4
10 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/25 1:01 更新