![Wget - 링크 이름을 딴 로컬 디렉터리에 파일 저장](https://rvso.com/image/1452862/Wget%20-%20%EB%A7%81%ED%81%AC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%94%B4%20%EB%A1%9C%EC%BB%AC%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%20%ED%8C%8C%EC%9D%BC%20%EC%A0%80%EC%9E%A5.png)
저는 wget을 처음 사용하기 때문에 이것이 바보 같은 질문이 아니기를 바랍니다.
파일 링크 이름을 따서 명명된 로컬 디렉토리에 파일을 저장하려면 어떻게 해야 합니까?
다운로드에 리디렉션이 포함된 경우에는 작동하지 않는 것 같습니다.
예를 들어, 에서 파일을 다운로드한다고 가정하면 wget을 사용하여 하위 디렉터리 www.abc.com/news/xyz.jif
라는 이름의 디렉터리에 로컬 복사본을 저장한 다음 file 을 저장할 수 있습니다 .www.abc.com
news
xyz.jif
그러나 파일이 xyz.jif
이동 www.qwerty.com/old/xyz.jif
되고 검색이 그곳으로 리디렉션된 경우 파일은 여전히 www.abc.com
...etc 아래에 저장됩니다.
내가 말했듯이 나는 이것에 익숙하지 않으므로 문제를 올바르게 설명했으면 좋겠습니다.
다음은 간단한 실제 예입니다(wget 사용).
wget --force-directories www.smugmug.com/photos/1235566-S.jpg
c:\www.smugmug.com/photos/1235566-S.jpg 에 저장됩니다.부정확한. c:\suz.smugmug.com/photos/1235566-S.jpg
리디렉션된 위치에 저장했어야 합니다 .
답변1
죄송합니다. 처음에는 요점을 파악하지 못했습니다. 따라서 완전히 새로운 답변(빠르고 더러운 - 그리고 bash 프로그래밍이므로 Linux에서만 작동함): cURL을 사용하여 리디렉션이 있는지 확인합니다( -w
매개변수 사용). 결과에 따라 wget을 사용하여 원래 URL이나 리디렉션 대상을 가져옵니다.
url=www.smugmug.com/photos/1235566-S.jpg; redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`; if [ -z $redirurl ]; then wget -x $url; else wget -x $redirurl; fi
또는 여러 줄에:
url=www.smugmug.com/photos/1235566-S.jpg;
redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`;
if
[ -z $redirurl ];
then wget -x $url;
else wget -x $redirurl; fi
redirurl
리디렉션 대상이 있는 경우 해당 대상으로 설정됩니다. 그렇지 않은 경우 wget
원래 URL로 호출됩니다. 그렇다면 wget
리디렉션 대상을 호출합니다. 매개 -x
변수는 wget
하위 디렉토리를 생성합니다.
물론 이는 한 가지 수준의 리디렉션만 처리합니다. 더욱 강력하게 만들려면 리디렉션이 있는지 재귀적으로 확인해야 합니다. 따라서 이 문제를 안정적인 방법으로 해결하려는 경우 단순히 명령줄 옵션의 문제가 아닙니다.