wgetを使用して通常のファイル名を取得する

wgetを使用して通常のファイル名を取得する

wgetを使用して、ファイル名に加えて追加情報を含むURLからファイルのリストをダウンロードしています。これにより、次のファイル名が生成されます。

pythonbook.pdf@y=11&x=123

私が本当に欲しいのはpythonbook.pdfの部分です。私のファイルリストはデフォルトではURLリストです。たとえば、次のようになります。

https://dl.domain.com/pythonbook.pdf@y=11&x=123

ファイル名から不要な部分を削除するには?

ベストアンサー1

この場合、リスト全体を繰り返すのが最も簡単な方法です(wget動的に出力ファイル名を生成することはサポートされていないようです)。

while read url; do
    t=${url##*/}  # removes protocol and hostname
    pdf=${t%@*}   # removes part from @ onwards
    wget -O "$pdf" "$url"
done < LIST-OF-URLs

urlファイルのURLリストからURLを読みますか?pdfファイル名部分のみを読んでください。


名前が一意でない場合は、次のようにファイル名に数字を追加できます(すべてのファイルがPDFであると仮定)。

i=0
while read url; do
    t=${url##*/}      # removes protocol and hostname
    pdf=${t%.pdf@*}   # removes part from .pdf@ onwards
    wget -O "$pdf-$i.pdf" "$url"
    ((i++))
done < LIST-OF-URLs

または(ファイルのサフィックスが異なる場合)

i=0
while read url; do
    t=${pdf##*/}    # removes protocol and hostname
    pdf=${t%@*}     # removes part from @ onwards
    wget -O "$i-$pdf" "$url"
    ((i++))
done < LIST-OF-URLs

おすすめ記事