フォルダ名siteの下に約50個のHTML / jsファイルがあります。
一部のファイルには以下が含まれます(次の行はファイル内で組み合わされます)
{"rendered":"http:\/\/localhost:4542\/?page_id=854"}
http:\/\/localhost:4542\/wp-content\/uploads\/2022\/09\/
src=\"http:\/\/localhost:4542\/wp-content\/uploads\/2022\/09\/B
http:\/\/localhost:4542\/wp-content\/uploads\/2022\/09\/A
replies":[{"embeddable":true,"href":"http:\/\/localhost:4542\/en\/wp-json
フォルダ内のすべてのファイルを繰り返し変更できるツール/コマンドはありますかhttp:\/\/localhost:4542
?https:example.com
これでmacOSで作業しています。
答え1
持ち運べる:
LC_ALL=C find . '(' -name '*.[Jj][Ss]' -o \
-name '*.[Hh][Tt][Mm][Ll]' -o \
-name '*.[Hh][Tt][Mm]' \
')' -exec perl -pi -e '
s{\Qhttp:\/\/localhost:4542\E}{https:example.com}g' {} +
置き換えるファイルがまったくないファイルを再作成することに注意してください。
GNU grep
/xargs
または互換性(ここでは過度の入力を避けるために中括弧拡張をサポートするシェル)の場合は、これを回避できます。
LC_ALL=C grep -r --include='*.'{'[jJ][sS]','[Hh][Tt][Mm]'{,'[Ll]'}} \
-Fl --null 'http:\/\/localhost:4542' . |
xargs -r0 perl -pi -e '
s{\Qhttp:\/\/localhost:4542\E}{https:example.com}g'
大きなダメージなしで削除するオプション(ファイルが見つからない場合はPerl警告のみを表示)に加えて、-r
GNU APIの大部分をコピーするMacosでも動作します。xargs
grep
grep
答え2
find
パラメータと一緒にコマンドを試すことができます-exec
。
find /path/to/folder -type f -regex '.*\.\(js\|html\)' -exec sed -i 's#http:\\/\\/localhost:4542#https:example.com#g' {} +
Mac OSでは、同様の構文を使用できます。
find /path/to/folder -E -type f -regex '.*\.(js|html)' -exec sed -i '.bak' 's#http:\\/\\/localhost:4542#https:example.com#g' {} +
本当にうまくいってください。テストするMacはありませんが、動作します。 Mac OSでは、-i
このオプションを指定するときにファイル拡張子をバックアップする必要があります。 ".bak"の代わりに任意の値を使用できます。
クレジット取引:
メモ:このコードがMac OSで動作するかどうかはわかりませんが、次のように試すこともできます。
find /path/to/folder -iname "*.html" -o -iname "*.js" -exec sed -i 's#http:\\/\\/localhost:4542#https:example.com#g' {} +
答え3
特定のフォルダ(たとえば)で特定の種類(たとえば)のすべてのファイルをfind
見つけて、次のコマンドを使用してコマンドに入力できます。*.txt
.
sed
xargs
find . -type f -name '*.txt' -print0 | xargs -0 sed -i 's/http:\\\/\\\/localhost:4542/https:example.com/g'
上記のスラッシュがエスケープされていることに注意してください。