wgetに既存のファイル名を賢明に変更させます。

wgetに既存のファイル名を賢明に変更させます。

使用されているファイル名がすでに存在する場合は、wgetファイル名をに変更してください。名前をデフォルト値にfilename.extension.1変更する必要がありますか?filename.1.extension

答え1

いいえ。

wgetファイル名の解釈、解析、または理解を試みずに、既存のファイル名にバックアップサフィックスを追加します。これは、ファイルバックアップを作成する他のユーティリティのデフォルト動作とも一致します。

editorvimと(他のほとんどのエディタ)は、ファイル名にバックアップサフィックスを追加するように設定できます(デフォルトではemacs3つすべて)。ストリームエディタを使用すると、元のコンテンツ(ファイル名の末尾に追加)のバックアップを使用している間に内部編集が可能になります。 GNUとユーティリティはさまざまな複雑さのバックアップを作成できますが、常にファイル名の末尾にサフィックスを追加します。同様に、元のファイルを更新されたファイルに置き換える前に、ファイルにサフィックスを追加できます。など。nano~sedsed -i.suffix.suffixmvcprsync

ファイル名の途中にバックアップ番号を追加すると問題になります。特にファイル名/に。file.tar.gzmyfile.7

答え2

一度ダウンロードすると

perl-rename -i "s/(.*)(\.extension)(\.[0-9]+)$/\1\3\2/" *

rename利用可能なすべてのバージョンについて。

パス既存のファイルを上書きしたくない場合は、perl-renameこのオプションを使用してください。 「テスト実行」-iに使用されます。-n

答え3

私のソリューションを共有したかったです。

alias wget='func(){ (wget --tries=0 --retry-connrefused --timeout=30 -O download_pkg.tmp "$1" && mv download_pkg.tmp "${1##*/}") || rm download_pkg.tmp; unset -f func; }; func

一時名でファイルをダウンロードするために「url」パラメータを受け取る関数を生成します。成功すると、$ {1##*/}を使用してパラメータ$ 1から抽出された正しいファイル名に名前が変更されます。失敗すると、一時ファイルが削除されます。ジョブが中断されると、次回実行時に一時ファイルが置き換えられます。最終的に unset -f は、エイリアスの実行時に関数定義を削除します。

関連情報