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

Linuxコマンドfind

内容

 状態:-  閲覧数:550  投稿日:2018-03-27  更新日:2018-03-27

ファイル拡張子などで条件を絞って全置換するためには?


「grep」ではなく「find」を使用

複数あるファイルの中から特定の文字列を一括置換したいときのLinuxコマンド

 閲覧数:272 投稿日:2015-06-14 更新日:2018-03-27 
複数あるファイルの中から特定の文字列を一括置換したいときのLinuxコマンド
・このコマンドは実行したら修正できないので要注意
find ./ -type f | xargs sed -i "s/hoge/fuga/g"

【上記コマンドの説明】
find
find の次で指定したディレクトリ以下のファイルを検索する。
ファイル検索の構文は「find [path] [検索条件] [アクション]」

./
今いるディレクトリ以下が検索対象。「~/」とするとホームディレクトリ以下が検索対象となる。
./ の代わりにフルパスでも可。この場合も指定したディレクトリ以下が検索対象になる。

-type f
指定したファイルタイプを検索する。fが通常ファイルを,cまたはdとするとディレクトリを,lとするとシンボリック・リンクを検索します。

xargs
標準入力からコマンドラインを作成し、それを実行する

sed
文字列の置換,行の削除を行う
sed の基本構文は「sed (オプション) [対象ファイル]」

-i
文字列を挿入する

s/置換条件/置換文字/g
置換条件はこれから置き換えたい、元の文字列。置換文字は置換後の文字列。
最後に g をつけた場合は。置換条件に一致した全ての文字列を置換文字に置き換える。

このコマンドが修正できない理由


・一度このコマンドを実行後、元の文字列または別の文字列に変更したい場合、他の関係のない文字列に干渉してしまう場合があるため

例えば、
「★★☆☆……」を
$ find ./ -type f | xargs sed -i "s/★/☆/g"
で「☆☆☆☆……」に置換。

でもやっぱり元に戻したいので上記の逆をして
$ find ./ -type f | xargs sed -i "s/☆/★/g"
としても、
「★★★★……」
こうにしかならない

つまり、置換先の文字列内容が、予め対象ディレクトリ内にあると元へ戻せなくなる


指定ディレクトリ内の「特定拡張子のファイル」のみ削除 / find の -delete オプションを使用

カレントディレクトリ配下の「指定拡張子ファイル」内に「指定文字列」が含まれているものを検索する



類似度ページランキング
順位 ページタイトル抜粋
1 CentOSで、指定ディレクトリ以下の「ファイル内容」を全文置換 36
2 指定ディレクトリ内の「特定拡張子のファイル」のみ削除 / find の -delete オプションを使用 35
3 CentOSでcpコマンド動作確認するためには、Control + T ではなく、 -v オプションを使用 35
4 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? 33
5 複数ファイルから日本語を含むファイルを抽出するためには、grep -l -R '[亜-熙ぁ-んァ-ヶ]' . 32
6 /etc/groupでは、「そのグループをプライマリグループとするユーザ名」を確認することは出来ない 32
7 それまで受信できていたcron経由によるメールを、正常受信できなくなった原因 31
8 cronで定期実行しているphpファイルを、コマンドライン経由で即時実行する 31
9 CentOS7コマンドは「/usr/bin/」もしくは「/usr/sbin/」内に格納されているファイルを実行している 31
10 カレントディレクトリ配下の「指定拡張子ファイル」内に「指定文字列」が含まれているものを検索する 30
11 PHP5をインストールしているCentOSで、PHP7も使用したい 30
12 「cron × Cent OS7」でよく使用するコマンド 30
13 Let's Encrypt。証明書取得後、複数ホストを確認するためには? 30
14 英語でmanページを表示するためには「$ LANG=C man ●●」。具体例「$ LANG=C man grep」 29
15 Let's Encrypt の Nginx プラグインで、HTTPS化する対象サブドメインを追加するには 29
16 「RLogin」で文字化けするようになった場合は、オプション設定 - フォント - 文字セット -「UTF-8」を選択します。  29
17 以前は普通に表示されていたWebサイト表示が、最近とくに遅くなっているので、原因を知りたい2 29
18 以前は普通に表示されていたWebサイト表示が、最近とくに遅くなっているので、原因を知りたい1 29
19 gzip や deflate を使用してリソースを圧縮することで、ネットワークで送信されるバイト数を減らすことができます。 28
20 「/」以下を、index.htmで表示 28
2022/7/03 18:19 更新
週間人気ページランキング / 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 更新