2

指定できることは承知していますが、次のように単純であっても、ファイル-i.bakを削除する必要があることに対処したくありません。.bak

find . -name '*.bak' -exec rm {} \;

sedデフォルトで、-iインライン置換するすべてのファイルを指定するたびに、次のようなものに戻すように監査できる方法はあります/www/backupsか?

4

1 に答える 1

3

バックアップ ファイルをまったく使用せずにインライン置換するだけの場合は、拡張子を off: のままにしておきますsed -i 's/pat/rep/'

他の場所のバックアップに関しては、GNU sedは次のように述べています。

次のルールに従います。拡張子に * が含まれていない場合は、現在のファイル名の末尾に接尾辞として追加されます。拡張子に 1 つ以上の * 文字が含まれている場合、各アスタリスクは現在のファイル名に置き換えられます。これにより、サフィックスの代わりに (またはサフィックスに加えて) バックアップ ファイルにプレフィックスを追加したり、元のファイルのバックアップ コピーを別のディレクトリに配置したりできます (ディレクトリが既に存在する場合)。

バックアップの「サフィックス」のアスタリスクは、ファイル名 (パスを含む - サブフォルダーがある場合は、最初にバックアップ ディレクトリに作成する必要があります) に置き換えられるようです。

% seq 5 > file
% sed -i'backups/*.bak' s/3/c/ file
% cat file
1
2
c
4
5
% cat backups/file.bak
1
2
3
4
5
%
于 2012-05-14T18:02:14.063 に答える