たとえば、リンクがありますhttp://www.abc.com/123/def/ghi/jkl.mno
。wget
またはを使用してダウンロードし、リンクからその部分をインポートしたcurl
出力ファイルの名前を取得したいと思います。def_ghi_jkl.mno
def_ghi
wget
出力ファイル名を明示的に指定しないように、このコマンドを複数のファイルをダウンロードするスクリプトに入れます。
答え1
curl
代わりに、ファイル名出力を書き込む必要があることを示す単一の引数を取るオプションが-o
あります。これらの各変数は、取得したURLに対応する文字列に置き換えられます。複数のファイルをインポートするには、に範囲を指定します。インポートするURL部分が連続した数字の場合は、指定された範囲を使用できます。--output
stdout
{}
[]
#
{}
[]
例:
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.mno
def_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
関連しているので参考にしてください-o
wget 自己出力指定されたファイルに。
答え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 / _)"