使用特殊字符批量重命名(或正确显示)文件
我有一堆目录和子目录,其中包含带有特殊字符的文件,例如以下文件: robbie@phil:~$ ls test�sktest.txt test?sktest.txt 查找揭示了一个转义序列: robbie@phil:~$ find test�sktest.txt -ls 424512 4000 -rwxr--r-x 1 robbie robbie 4091743 Jan 26 00:34 test\323sktest.txt 我什至可以在控制台上键入其名称的唯一原因是由于制表符的完成。这也意味着我可以手动重命名它们(并去除特殊字符)。 我已将LC_ALL设置为UTF-8,这似乎无济于事(也不在新的shell上): robbie@phil:~$ echo $LC_ALL en_US.UTF-8 我正在使用Mac上的ssh连接到计算机。这是Ubuntu安装: robbie@phil:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=7.10 DISTRIB_CODENAME=gutsy DISTRIB_DESCRIPTION="Ubuntu 7.10" Shell是Bash,TERM设置为xterm-color。 这些文件已经存在了很长一段时间,并且尚未使用该Ubuntu版本创建。因此,我不知道以前的系统编码设置是什么。 我已经尝试过以下方法: find . -type f -ls | sed 's/[^a-zA-Z0-9]//g' 但是我找不到能满足我所有需求的解决方案: 识别所有具有不可显示字符的文件(以上内容忽略太多) 对于目录树中的所有那些文件(递归),请执行mv …