私の現在のフォルダ名には、次のdetails1
ファイルのリストが含まれています。file1
file2
file3
例:(ここではこれだけを表示しました。file1
他のファイルにも同じ内容が含まれていますfile1
。)
file1:cat file1
href="/de_hecklist/secry/GD/GD10/"
href="/de_hecklist/secry/GT/GT1/"
私のクエリ:
現在のディレクトリ(たとえばfile1
、file2
など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)