URLに基​​づくカスタムファイル名にwgetまたはカールの出力を書き込みます。

URLに基​​づくカスタムファイル名にwgetまたはカールの出力を書き込みます。

たとえば、リンクがありますhttp://www.abc.com/123/def/ghi/jkl.mnowgetまたはを使用してダウンロードし、リンクからその部分をインポートしたcurl出力ファイルの名前を取得したいと思います。def_ghi_jkl.mnodef_ghi

wget出力ファイル名を明示的に指定しないように、このコマンドを複数のファイルをダウンロードするスクリプトに入れます。

答え1

curl代わりに、ファイル名出力を書き込む必要があることを示す単一の引数を取るオプションが-oあります。これらの各変数は、取得したURLに対応する文字列に置き換えられます。複数のファイルをインポートするには、に範囲を指定します。インポートするURL部分が連続した数字の場合は、指定された範囲を使用できます。--outputstdout{}[]#{}[]

例:

  curl http://www.abc.com/123/{def}/{ghi}/{jkl}.mno -o '#1_#2_#3.mno'

オプションパラメータの周囲に引用符を書き留めます(ファイル名が拡張変数の1つで始まらない限り、必要ありません)。これにより出力ファイルが生成されますdef_ghi_jkl.mno

  curl http://www.abc.com/123/{def}/{ghi}/{jkl,pqr,stu}.mno -o '#1_#2_#3.mno'

その後、出力ファイルdef_ghi_jkl.mnoと。def_ghi_pqr.mnodef_ghi_stu.mno

 curl http://www.abc.com/123/{def}/{ghi}/[1-3].mno -o '#1_#2_#3.mno'

これにより、出力ファイルdef_ghi_1.mno、、def_ghi_2.mnoが生成されますdef_ghi_3.mno

答え2

wget保存するファイル名を指定できるスイッチ-O(長い形式)があります。--output-document(おそらくカールにも似たものがあるでしょう。)したがって、次のようにすることができます。

wget -O def_ghi_jkl.mno http://www.abc.com/123/def/ghi/jkl.mno

それはあなたが望むことを行います。

この命名システムを自動化したい場合は、おそらくwgetの周りにラッパーを作成できます。しかし、完全に保護するのは難しく、確かにこの答えの範囲外です。 (明示的なURLから単一のファイルをダウンロードする簡単なケースは正しい結果を得るのは難しくありませんが、これはwgetの唯一の動作モードではありません。 )。

執筆に-O関連しているので参考にしてください-owget 自己出力指定されたファイルに。

答え3

カールが好きなら、最も直接的な方法は次のとおりです。

curl -L -o <filename> "https://drive.google.com/uc?export=download&id=<file id>"

filename:ダウンロードしたファイル名

ファイルID:GoogleドライブのWebビューにあるファイルのID(形式)https://drive.google.com/file/d/ファイル番号/より

答え4

必要なファイル名はそれ自体から派生することができないため、wgetシェルスクリプトを介して処理する必要があります。

$ url='http://www.example.com/123/def/ghi/jkl.mno'
$ outFile=$(echo "$url" | cut -d /  -f 5- | tr / _)
$ echo $outFile 
def_ghi_jkl.mno
$ wget "$url" -O "$outFile"

または1行で好む場合:

wget "$url" -O "$(echo "$url" | cut -d /  -f 5- | tr / _)"

関連情報