backup
ファイル拡張子というディレクトリがあります*.sql
。私が望むのは、ディレクトリ内のすべてのSQLファイルの前に1行を追加することですbackup
。
そうしましたが、echo 'use my_db;' >> backup/*.sql
成功しませんでした。
次のことを試しましたが、次に何をすべきかわかりません。
ls backup/*.sql | xargs echo "use my_db;"
その行を前に追加するソリューションはありますか?
ベストアンサー1
GNUの使用sed
:
for sql in backup/*.sql; do
sed -i '1i\use my_db;' "$sql"
done
標準sed
:
for sql in backup/*.sql; do
sed '1i\
use my_db;
' "$sql" >"$sql.bak" && mv "$sql.bak" "$sql"
done
.sql
これにより、その中にあるすべてのファイルをすぐに編集できますbackup
。編集コマンドは、各ファイルの最初の行の前に1行を挿入します。
これは、パターンがbackup/*.sql
編集したいファイルとのみ一致すると仮定します。
使用echo
とcat
:
for sql in backup/*.sql; do
{ echo 'use my_db;'; cat "$sql"; } >"$sql.tmp" && mv "$sql.tmp" "$sql"
done
このループでは、最初にファイルに追加する行を出力してから、ファイルの内容を出力します。これは一時ファイルに移動し、名前が変更されます。
注文する
echo 'use my_db;' >> backup/*.sql
次のように拡張されます。
echo 'use my_db;' >> backup/file1.sql backup/file2.sql backup/file3.sql
これは次のとおりです。
echo 'use my_db;' backup/file2.sql backup/file3.sql >> backup/file1.sql
その後、与えられた文字列がbackup/file1.sql
。
2番目のコマンドはファイルを変更しません。