我一直在尝试使用 iconv 递归重命名文件和文件夹,但没有成功,文件已正确重命名,但文件夹没有。
我用于文件的是(完美):
find . -name * -depth \ -exec bash -c 'mv "$1" "${1%/*}/$(iconv -f UTF8 -t ASCII//TRANSLIT <<< ${1##*/})"' -- {} \;
我对文件和文件夹的尝试(失败:仅重命名文件夹):
find . -exec bash -c 'mv "$1" "$(iconv -f UTF8 -t ASCII//TRANSLIT <<< $1)"' -- {} \;
原始问题:我只想批量重命名很多文件以使它们“对网络友好”,比如删除空格、奇怪的字符等,目前我有
find . -name '*' -depth \
| while read f ;
do
mv -i "$f" "$(dirname "$f")/$(basename "$f"|tr -s ' ' _|tr -d "'"|tr -d ","|tr - _|tr "&" "y"|tr "@" "a")" ;
done
有什么办法可以一次性完成上面的 tr 和 iconv 操作吗?因为我正在谈论大约 300,000 个要重命名的文件,所以如果可能的话,我想避免第二次搜索。
如果需要,我正在使用 Bash 4.2.24
提前致谢。