如何“cd”到非utf8目录

如何将目录更改为名称由非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命令来只识别相关的目录,然后执行重命名它。

  1. 在父目录中使用ls -i来标识关联的inode。
  2. 执行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"