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