別のフォルダ、異なるファイル名、および同じ拡張子に保存するにはwgetが必要ですが、ダウンロードする前にファイル名はありません。
たとえば、次のような場合があるとします。
http://ge.tt/api/1/files/someFile/0/blob?download
IDでダウンロードする必要がありますが、「fj39ejd」フォルダにdownloads
。
次の場所に保存する最良の方法は何ですか?
/path/to/downloads/fj39ejd.[extension it had before downloading]
これを達成する方法について提案がありますか?
答え1
ローカルファイルの名前をサーバーで選択した名前として指定するには、次のようにします。wget --content-disposition --trust-server-names
。
サーバーが選択した拡張子にローカルに選択した名前を割り当てるには、後で名前を変更する必要があります。最も簡単な方法は、空のディレクトリを作成し、wget
そのディレクトリを呼び出して、作成したファイルの名前を目的の名前に変更することです。
dir="$(TMPDIR=$PWD mktemp -d)" &&
(cd "$dir" && wget --content-disposition --trust-server-names 'http://ge.tt/api/1/files/someFile/0/blob?download') &&
set "$dir/"* &&
mv "$1" "fj39ejd.${1#"$dir"/*.}" &&
rmdir "$dir"
答え2
私は実際に2つの可能なアプローチを考えました。
a)「フォルダに保存できます。fj39ejd「は次のとおりです。
downloads/fj39ejd/theFileNameThatWasBeing.Downloaded
または、b)tmp
を含むファイルが含まれている場合は、whileループを調べるフォルダを作成できます。fj39ejd「その後、explode
拡張を求める必要がありますが、少し費用がかかり、接続がタイムアウトする可能性があります。