在我们远程ssh到主机进行管理的时候,经常发生这样的情况,
就是用户通过远程ftp软件建立或者上传的中文文件夹名字在终端下无法正常显示,
比如我们用ftp登陆到http://www.mysun.org/download下建立了如下目录
[电影] <DIR> 25.04.2006 16:14
[电子书] <DIR> 02.05.2006 06:43
[软件] [new] <DIR> 09.05.2006 11:01
[视频] <DIR> 02.05.2006 06:57
[音乐] <DIR> 25.04.2006 16:14
但是我们ssh上去ls一下,显示如下:
root@mysun:/www/mysun/download# ls
??? ??? ???? ???? ?????? 101MSDCF download.php indexfiles index.php log.php
如果我们要进去删除某个文件夹里的某个文件,cd ???当然是cd不进去的。。
那怎么办呢?用好管道跟inode就可以解决这个问题。
root@mysun:/www/mysun/download# ls -i
1874 ??? 1875 ???? 1611 ?????? 1770 download.php 1771 index.php
1873 ??? 1872 ???? 53902 101MSDCF 770 indexfiles 1772 log.php
看,通过在ls后面加一个参数就可以得所有当前目录文件夹下的所有文件以及文件夹的inode号,但是我们还是无法判断5个文件夹里哪个文件夹是我们要进到的地方。
我们得进去看看,怎么进去呢?有了inode号就好办了。
root@mysun:/www/mysun/download# cd `find ./ -inum 1875`
root@mysun:/www/mysun/download/??s
Linux qmail??????.mht qmail_2.9.tar.gz
啊呀不是,,再试
root@mysun:/www/mysun/download/?cd ..
root@mysun:/www/mysun/download# cd `find ./ -inum 1611`
root@mysun:/www/mysun/download/μ痓?# ls
jdk-1_5_0-doc.zip VC++???????(?????).ace
这下对了,我们要找的就是VC*.ace 那个文件,rm -f VC*.ace就收工了。
简而言之,用好两条命令
ls -i // 显示当前文件夹下的所有文件及文件夹的inode信息
cd `find ./ -inum XXX` // find得到的是在./文件夹下inode为XXX的文件夹,然后把这个输出作为输入传递给cd,就进去了。。就这么方便。