Bashスクリプトでurldecode関数の使用が失敗します。 a%xybはaybになります(xyは数値です)。

Bashスクリプトでurldecode関数の使用が失敗します。 a%xybはaybになります(xyは数値です)。

deurlnamefromsはフォルダパスをrenameutils無視しますが、ファイル名を正しく変更します%xy

しかし、これまでBashスクリプトで文字列を処理できる関数が見つかりませんでした。

私が今まで試したこと:

1.

shopt -s expand_aliases
alias urldecodePython='python3 -c "import sys, urllib.parse as ul; print(ul.unquote_plus(sys.argv[1]))"'
fnonly=$( urldecodePython "$fnonly" )
urldecode() {
    # urldecode <string> ,  assumes the data contains no backslash.

    local url_encoded="${1//+/ }"
    printf '%b' "${url_encoded//%/\\x}"
}
fnonly="$(urldecode "$fnonly")"
fnonly=$(echo "$fnonly" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g')
rename 'use URI::Escape; $_ = uri_unescape $_' $fdir/*%*

deurlname(文字列関数ではなく;に切り替える前には同じ問題がありました。)

関連情報