ファイルの新しいコピーが必要なので、次のようなことをしたいと思います。
dir *.rb
foreach file
make a copy of the file, e.g. 'blob.rb' to 'blob_processed.rb'
do the 50 sed commands to process the blob_processed.rb file
end
この手順を実行する30個のファイルを作成せずにこれを行うことができます(コピー後のすべてのsed)。 sedは少し長いが動作し、各ファイルはまったく同じです。一例:
sed -i "s#require "selenium-webdriver"#require 'my_helper' #" blob_processed.rb
ベストアンサー1
*.rb
出力を書き込む一時ディレクトリがあることを確認してください。そうしないと、ファイルをインポートせずにblob_processed_processed.rb
コマンドを2回実行できません。すべてが完了し、正常に機能したら、いつでも一時ディレクトリから出力ファイルをコピーできます。""
少なくともスペースを含むファイル名を処理できるように、ファイル名を入力してください。sedコマンドで
\"
二重引用符をエスケープするには、バックスラッシュ()を使用します。
結果は次のとおりです。
#!/bin/bash
mkdir -p tmp
for i in *.rb
do
out=tmp/${i%.rb}_processed.rb
cp "$i" "$out"
sed -i "s#require \"selenium-webdriver\"#require 'my_helper' #" "$out"
done
[Edited by Michael (OP)] しかし、私はそうしましたが、これはほとんどうまくいきます:
#!/bin/bash
mkdir -p tmp
for i in *.rb
do
out=tmp/${i}
cp "$i" "$out"
done
同じファイル名を保持しますが、すべての新しいファイルをtmp /の下に配置します。