ファイル名がSJISでエンコーディングされているFTPサーバからwgetで日本語名ファイルをダウンロードしたい
環境: Ubuntu 14.04
こういったようにwgetでFTPからファイルをダウンロードしようとしました。
wget --user=<USER> --password=<PASS> "ftp://<DOMAIN>/日本語ファイル名.txt"
<< 日本語ファイル名.txt: そのようなファイルやディレクトリはありません
しかし上記のエラーになってしまいます。
--no-remove-listing
でリストファイルを確認してみると
wget --user=<USER> --password=<PASS> --no-remove-listing "ftp://<DOMAIN>"
cat .listing | nkf --guess
<< Shift_JIS (CRLF)
ファイルはSJISエンコーディングされていました。そこでファイル名をSJISで指定すれば
できるのかなと思い、下記のようなコマンドも試してみましたが、ダメでした。
wget --user=<USER> --password=<PASS> "`echo ftp://<DOMAIN>/日本語ファイル名.txt | nkf -s`"
wget --user=<USER> --password=<PASS> --remote-encoding=Shift_JIS "ftp://<DOMAIN>/日本語ファイル名.txt"
wget --user=<USER> --password=<PASS> --remote-encoding=sjis "ftp://<DOMAIN>/日本語ファイル名.txt"
wget --user=<USER> --password=<PASS> --remote-encoding=cp932 "ftp://<DOMAIN>/日本語ファイル名.txt"
何か方法はないでしょうか?
暫定解決?
コメントで指摘いただいた通り、echoに-n
をつけるとダウンロードできました。
wget --user= --password= "echo -n ftp://<DOMAIN>/日本語ファイル名.txt | nkf -s
"
ただし、特定の日本語が含まれているとエラーになるようでした。
〇 日本語ファイル名.txt
✕ 日本語ファーイル名.txt
Windows版のwgetだっとnkfで文字コード変換をしなくてもダウンロードできた(ーが含まれていても)ので、とりあえずこれで運用しようと思います。
https://eternallybored.org/misc/wget/