简单孤落
一个时光忘不掉的地方

Linux服务器删除乱码文件和文件夹的方法

20151011142950

由于php大势所趋,所以接触linux服务器的机会越来越多。不同于windows服务器,linux服务器只支持数字、英文等字符,对中文字符没办法识别。所以导致我们打包上传文件解压之后出现中文乱码文件和文件夹。网上有很多解决的办法,但是今天亲测用find命令能快速删除乱码的文件和文件夹,所以跟大家分享一下。

首页进入乱码文件所在文件夹:(直接复制命令运行,注意修改路径)

cd /路径/

使用ls -i命令找到文件或文件夹的节点编号:(直接复制命令运行,注意查看节点编号)

ls -i
34125554 QQ?+-..??.png   #34125554 就是节点编号#

前面的就是节点号了,接下来使用find命令查询并且删除:(直接复制命令运行,注意修改节点编号)

find -inum 节点编号 -delete

-inum指根据节点号查询;-delete顾名思义就是删除操作了。这样就成功删除乱码文件了,值得注意的是,此方法只适用于删除文件或空的文件夹。

对于文件夹,尤其是非空的文件夹,上面的方法就不适用了,要用到另外的参数来实现。
首先相同的是查看乱码文件夹的节点号:(直接复制命令运行,注意修改节点编号)

ls -i
18648248 s+s??..? - Thank you, love(128kbps) 2011.06.22

接下来使用find命令删除:(直接复制命令运行,注意修改节点编号)

find -inum 18648248 -exec rm -rf {} \;
find: ./s+s??..? - Thank you, love(128kbps) 2011.06.22:No such file or

虽然提示我们找不到此文件或文件夹,但其实已经表明删除了。-exec作用是查找后执行命令,其中{}代表前面查询到的结果,空格+\;是结束符,其它就不说了。-exec后可以跟任何常用命令,因此这方法不但适用于文件夹,文件也可以。

## 怎么批量删除呢?其实很简单,用for就好了?

批量删除文件:(直接复制命令运行,注意修改节点编号)

for n in 节点编号 节点编号;do find -inum $n -delete;done

批量删除文件夹命令:(直接复制命令运行,注意修改节点编号)

for n in 节点编号 节点编号;do find -inum $n -exec rm -rf {} \;;done

$n是变量名,与for后面定义的一致,其它没啥好说的,适用其它操作。

 

未经允许不得转载:时光旅社 » Linux服务器删除乱码文件和文件夹的方法

分享到:更多 ()