如何将目录更改为名称由非ASCII默认字符组成的目录?
root@senior:/media/data/hudba/# ls . -l total 3096 -rwxr-xr-x 2 user users 3160192 Jul 31 2006 Lucie BĂlĂĄ - esemes.mp3 drwxr-xr-x 1 user users 8192 Mar 28 2008 ĂplnÄahĂĄ
如何进入该目录(第二项)? 或者(更好)重命名它,而不使用MC或其他工具,或不得不重新安装分区?
确保它确实不是UTF-8。
echo $LANG ; 如果返回的string没有以.UTF-8结尾, .UTF-8您的terminal没有设置为正确的编码。
在可能的情况下,制表符或通配符完成。
如果第一个或第三个字符是ASCII,请尝试使用Tab完成为您完成这项工作。 远程服务器将提供原始字节,在这一点上你可以打回来,即使它看起来不合理。
很明显,在这种情况下,制表符完成不适用,但正如David指出的那样,您可能可以使用基于子string的通配符cd 。
使用抽象。
如果你不能传输正确的字符代码,甚至没有第一个字符,你几乎不得不使用其他工具来解决你的问题,比如哄骗find命令来只识别相关的目录,然后执行重命名它。
ls -i来标识关联的inode。 find . -type d -inum inode# find . -type d -inum inode# ,根据需要replaceinode号码。 如果这个命令有效并且只返回一个单独的目录(你想重命名的目录),那么把它追加到find命令的末尾: -okdir mv {} ILikeThisNameBetter \; ( -okdir是-okdir的变体,它提示你是否真的想要做某件事,在这种情况下这是正确的方法)
感谢Aaron Bush的inode方法,我之前的修改是通过文件大小来做到这一点的。
目录名双引号应该工作正常。
cd "ĂplnÄahĂĄ"
即使是有空格的名字
cd "ĂplnÄahĂĄ hfjksf"