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