文件
在Linux中,每个文件都有一个节点编号,我们可以利用此来搞定乱码,首先查看乱码文件的节点号
ls
-i
22413314 12 ?..??mp3
22413314 12 ?..??mp3
前面的就是节点号了,接下来使用find命令查询并且删除
find
-inum
22413314
-delete
-inum指根据节点号查询;-delete顾名思义就是删除操作了。这样就成功删除乱码文件了,值得注意的是,此方法只适用于删除文件或空的文件夹。
文件夹
对于文件夹,尤其是非空的文件夹,上面的方法就不适用了,要用到另外的参数来实现,首先相同的是查看乱码文件夹的节点号
ls
-i
18612483 瑗块.?.. - Thank you, Love (128kbps ) 2011.06.22
18612483 瑗块.?.. - Thank you, Love (128kbps ) 2011.06.22
接下来使用find命令删除
find
-inum
18612483
-exec
rm
-rf
{
} \;
find: . /瑗块.?.. - Thank you, Love (128kbps ) 2011.06.22: No such file or directory
find: . /瑗块.?.. - Thank you, Love (128kbps ) 2011.06.22: No such file or directory
虽然提示我们找不到此文件或文件夹,但其实已经表明删除了。-exec作用是查找后执行命令,其中{}代表前面查询到的结果,空格+\;是结束符,其它就不说了。-exec后可以跟任何常用命令,因此这方法不但适用于文件夹,文件也可以。
小技巧
怎么批量删除呢?其实很简单,用for就好了
文件
for n
in
22413315
22413314;
do
find
-inum
$n
-delete;
done
文件夹
for n
in
22413315
22413314;
do
find
-inum
$n
-exec
rm
-rf
{
} \
;;
done
$n是变量名,与for后面定义的一致,其它没啥好说的,适用其它操作。
后记
不仅仅是删除,其它基本操作如改名、移动、复制等都适用的。