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

관련 정보