シェルスクリプトまたはLinuxを使用して現在のディレクトリにある複数のファイルの内容を見つけて置き換える方法は?

シェルスクリプトまたはLinuxを使用して現在のディレクトリにある複数のファイルの内容を見つけて置き換える方法は?

私の現在のフォルダ名には、次のdetails1ファイルのリストが含まれています。file1file2file3

例:(ここではこれだけを表示しました。file1他のファイルにも同じ内容が含まれていますfile1。)

file1:cat file1

 href="/de_hecklist/secry/GD/GD10/"

 href="/de_hecklist/secry/GT/GT1/"

私のクエリ:

現在のディレクトリ(たとえばfile1file2などfile3)で複数のファイルを検索して置き換える方法を使用して、各ファイルを開かずに一度に各ファイルを置き換える方法です。

私は以下を試しました。 (各ファイルを開くと適用されます)

:%s/de_hecklist/data/g

:%s/secry/send/g

現在のディレクトリに複数のファイルがある場合、例外出力は次のようになります。

href="/data/send/GD/GD10/"

href="/data/send/GT/GT1/"

ベストアンサー1

この行が正しい出力を提供する場合

 sed -e 's/de_hecklist/data/g' -e 's/secry/send/g' file1

in-placeこれで内容を変更できます。-i

 sed -i -e 's/de_hecklist/data/g' -e 's/secry/send/g' file1

一致するすべてのファイルに対してこれを行うには、次のようにfile?します。

find . -name 'file?' -type f -exec sed -i -e 's/de_hecklist/data/g' -e 's/secry/send/g' {} \;

sedすべてのファイルをパラメータとして渡すこともできます。まず、すべてのフルパスファイル名を提供するコマンドを作成します。

find . -name 'file?' -type f

次に、次に追加しますsed

sed -i -e 's/de_hecklist/data/g' -e 's/secry/send/g' $(find . -name 'file?' -type f) 

おすすめ記事